class RedshiftConnector::S3Bucket
Attributes
name[R]
prefix[R]
Public Class Methods
add(name, default: false, **params)
click to toggle source
# File lib/redshift_connector/s3_bucket.rb, line 8 def S3Bucket.add(name, default: false, **params) instance = new(**params) @buckets[name.to_s] = instance if !@default or default @default = instance end end
default()
click to toggle source
# File lib/redshift_connector/s3_bucket.rb, line 16 def S3Bucket.default @default or raise ArgumentError, "no default S3 bucket configured" end
get(name)
click to toggle source
# File lib/redshift_connector/s3_bucket.rb, line 20 def S3Bucket.get(name) @buckets[name.to_s] or raise ArgumentError, "no such S3 bucket configured: #{name.inspect}" end
new(region: nil, bucket:, prefix: nil, access_key_id: nil, secret_access_key: nil, iam_role: nil)
click to toggle source
# File lib/redshift_connector/s3_bucket.rb, line 24 def initialize(region: nil, bucket:, prefix: nil, access_key_id: nil, secret_access_key: nil, iam_role: nil) @region = region @name = bucket @prefix = prefix @access_key_id = access_key_id @secret_access_key = secret_access_key @iam_role = iam_role end
Public Instance Methods
bucket()
click to toggle source
# File lib/redshift_connector/s3_bucket.rb, line 47 def bucket @bucket ||= begin resource = Aws::S3::Resource.new(client: client) resource.bucket(@name) end end
client()
click to toggle source
# File lib/redshift_connector/s3_bucket.rb, line 40 def client @client ||= begin args = { region: @region, access_key_id: @access_key_id, secret_access_key: @secret_access_key }.reject {|k, v| v.nil? } Aws::S3::Client.new(**args) end end
credential_string()
click to toggle source
# File lib/redshift_connector/s3_bucket.rb, line 66 def credential_string if @iam_role "aws_iam_role=#{@iam_role}" elsif @access_key_id "aws_access_key_id=#{@access_key_id};aws_secret_access_key=#{@secret_access_key}" else raise ArgumentError, "no credential given for Redshift S3 access" end end
delete_objects(keys)
click to toggle source
# File lib/redshift_connector/s3_bucket.rb, line 62 def delete_objects(keys) bucket.delete_objects(delete: {objects: keys.map {|k| {key: k} }}) end
object(key)
click to toggle source
# File lib/redshift_connector/s3_bucket.rb, line 54 def object(key) bucket.object(key) end
objects(prefix:)
click to toggle source
# File lib/redshift_connector/s3_bucket.rb, line 58 def objects(prefix:) bucket.objects(prefix: prefix) end
url()
click to toggle source
# File lib/redshift_connector/s3_bucket.rb, line 36 def url "s3://#{@bucket.name}/#{@prefix}/" end