Class: RedshiftConnector::S3Bucket
- Inherits:
-
Object
- Object
- RedshiftConnector::S3Bucket
- Defined in:
- lib/redshift-connector/s3_bucket.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#prefix ⇒ Object
readonly
Returns the value of attribute prefix.
Class Method Summary collapse
Instance Method Summary collapse
- #bucket ⇒ Object
- #client ⇒ Object
- #credential_string ⇒ Object
- #delete_objects(keys) ⇒ Object
-
#initialize(bucket:, prefix: nil, access_key_id: nil, secret_access_key: nil, iam_role: nil) ⇒ S3Bucket
constructor
A new instance of S3Bucket.
- #object(key) ⇒ Object
- #objects(prefix:) ⇒ Object
- #url ⇒ Object
Constructor Details
#initialize(bucket:, prefix: nil, access_key_id: nil, secret_access_key: nil, iam_role: nil) ⇒ S3Bucket
Returns a new instance of S3Bucket.
24 25 26 27 28 29 30 |
# File 'lib/redshift-connector/s3_bucket.rb', line 24 def initialize(bucket:, prefix: nil, access_key_id: nil, secret_access_key: nil, iam_role: nil) @name = bucket @prefix = prefix @access_key_id = access_key_id @secret_access_key = secret_access_key @iam_role = iam_role end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
32 33 34 |
# File 'lib/redshift-connector/s3_bucket.rb', line 32 def name @name end |
#prefix ⇒ Object (readonly)
Returns the value of attribute prefix.
33 34 35 |
# File 'lib/redshift-connector/s3_bucket.rb', line 33 def prefix @prefix end |
Class Method Details
.add(name, default: false, **params) ⇒ Object
8 9 10 11 12 13 14 |
# 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 ⇒ Object
16 17 18 |
# File 'lib/redshift-connector/s3_bucket.rb', line 16 def S3Bucket.default @default or raise ArgumentError, "no default S3 bucket configured" end |
.get(name) ⇒ Object
20 21 22 |
# 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 |
Instance Method Details
#bucket ⇒ Object
43 44 45 46 47 48 |
# File 'lib/redshift-connector/s3_bucket.rb', line 43 def bucket @bucket ||= begin resource = Aws::S3::Resource.new(client: client) resource.bucket(@name) end end |
#client ⇒ Object
39 40 41 |
# File 'lib/redshift-connector/s3_bucket.rb', line 39 def client @client ||= Aws::S3::Client.new(access_key_id: @access_key_id, secret_access_key: @secret_access_key) end |
#credential_string ⇒ Object
62 63 64 65 66 67 68 69 70 |
# File 'lib/redshift-connector/s3_bucket.rb', line 62 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) ⇒ Object
58 59 60 |
# File 'lib/redshift-connector/s3_bucket.rb', line 58 def delete_objects(keys) bucket.delete_objects(delete: {objects: keys.map {|k| {key: k} }}) end |
#object(key) ⇒ Object
50 51 52 |
# File 'lib/redshift-connector/s3_bucket.rb', line 50 def object(key) bucket.object(key) end |
#objects(prefix:) ⇒ Object
54 55 56 |
# File 'lib/redshift-connector/s3_bucket.rb', line 54 def objects(prefix:) bucket.objects(prefix: prefix) end |
#url ⇒ Object
35 36 37 |
# File 'lib/redshift-connector/s3_bucket.rb', line 35 def url "s3://#{@bucket.name}/#{@prefix}/" end |