Module: AwsS3
- Defined in:
- lib/aws_s3.rb
Constant Summary collapse
- S3_REGION =
APP_CONFIG['s3_region'] || 'us-east-1'
- S3_BUCKET =
APP_CONFIG['s3_bucket']
- S3_FOLDER =
APP_CONFIG['s3_folder'] || 'results'
Class Method Summary collapse
- .bucket ⇒ Object
- .client ⇒ Object
-
.copy(source_key, target_key) ⇒ Object
An intra bucket copy.
- .object(key) ⇒ Object
- .pipe_reader(s3_key) ⇒ Object
- .presigned_url(key, filename, expires_in) ⇒ Object
- .resource ⇒ Object
- .s3_enabled? ⇒ Boolean
- .store(key, filepath) ⇒ Object
Class Method Details
.bucket ⇒ Object
15 16 17 |
# File 'lib/aws_s3.rb', line 15 def bucket @bucket ||= resource.bucket(S3_BUCKET) end |
.client ⇒ Object
11 12 13 |
# File 'lib/aws_s3.rb', line 11 def client @client ||= Aws::S3::Client.new(region: S3_REGION) end |
.copy(source_key, target_key) ⇒ Object
An intra bucket copy
24 25 26 |
# File 'lib/aws_s3.rb', line 24 def copy(source_key, target_key) client.copy_object(bucket: S3_BUCKET, copy_source: S3_BUCKET + '/' + source_key, key: target_key) end |
.object(key) ⇒ Object
19 20 21 |
# File 'lib/aws_s3.rb', line 19 def object(key) bucket.object(key) end |
.pipe_reader(s3_key) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/aws_s3.rb', line 51 def pipe_reader(s3_key) bucket = Aws::S3::Resource.new(region: S3_REGION).bucket(S3_BUCKET) reader, writer = IO.pipe writer.instance_eval('undef :rewind') writer.binmode() t = Thread.new do bucket.object(s3_key).get(response_target: writer) writer.close end t.abort_on_exception = true reader end |
.presigned_url(key, filename, expires_in) ⇒ Object
32 33 34 35 36 37 38 39 40 41 |
# File 'lib/aws_s3.rb', line 32 def presigned_url(key, filename, expires_in) Pester.s3.retry do obj = object(key) if obj.exists? obj.presigned_url(:get, response_content_disposition: "attachment; filename=#{filename}", expires_in: expires_in) else nil end end end |
.resource ⇒ Object
7 8 9 |
# File 'lib/aws_s3.rb', line 7 def resource @resource ||= Aws::S3::Resource.new(region: S3_REGION) end |