Class: PrelandsRails::MyAwsClient
- Inherits:
-
Object
- Object
- PrelandsRails::MyAwsClient
- Defined in:
- lib/prelands_rails/concerns/my_aws_client.rb
Constant Summary collapse
- ACL_PUBLIC_READ =
'public-read'
Instance Method Summary collapse
- #bucket_objects_count(bucket_name) ⇒ Object
- #create_bucket_if_not_exists(bucket_name) ⇒ True
- #delete_bucket(bucket_name) ⇒ Object
- #delete_objects(bucket_name, objects) ⇒ Object
-
#initialize(access_key, secret_key, region) ⇒ MyAwsClient
constructor
A new instance of MyAwsClient.
- #list_buckets ⇒ struct Aws::S3::Types::ListBucketsOutput
- #list_objects(bucket_name) ⇒ Object
-
#move_file(s3_old_file_name, s3_new_file_name, bucket_name) ⇒ Object
Переместит файл в пределах
bucket_name
. - #upload_file(path_to_file, s3_file_name, bucket_name) ⇒ Object
Constructor Details
#initialize(access_key, secret_key, region) ⇒ MyAwsClient
10 11 12 |
# File 'lib/prelands_rails/concerns/my_aws_client.rb', line 10 def initialize(access_key, secret_key, region) @s3 = Aws::S3::Resource.new(region: region, access_key_id: access_key, secret_access_key: secret_key) end |
Instance Method Details
#bucket_objects_count(bucket_name) ⇒ Object
14 15 16 17 18 19 20 21 |
# File 'lib/prelands_rails/concerns/my_aws_client.rb', line 14 def bucket_objects_count(bucket_name) bucket = @s3.bucket bucket_name result = bucket.objects.count log :bucket_objects_count, 'bucket_name=%s, result=%s' % [bucket_name, result] result rescue Aws::S3::Errors::NoSuchBucket log :bucket_objects_count, ['No such bucket: ', bucket_name].join end |
#create_bucket_if_not_exists(bucket_name) ⇒ True
30 31 32 33 34 35 36 37 38 39 |
# File 'lib/prelands_rails/concerns/my_aws_client.rb', line 30 def create_bucket_if_not_exists(bucket_name) log :create_bucket_if_not_exists, 'bucket_name=%s' % bucket_name @s3.create_bucket bucket: bucket_name true rescue Aws::S3::Errors::BucketAlreadyOwnedByYou true rescue StandardError => e log :create_bucket_if_not_exists, e. false end |
#delete_bucket(bucket_name) ⇒ Object
41 42 43 44 45 46 47 |
# File 'lib/prelands_rails/concerns/my_aws_client.rb', line 41 def delete_bucket(bucket_name) log :delete_bucket, 'bucket_name=%s' % bucket_name @s3.client.delete_bucket bucket: bucket_name rescue StandardError => e log :delete_bucket, e. false end |
#delete_objects(bucket_name, objects) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/prelands_rails/concerns/my_aws_client.rb', line 59 def delete_objects(bucket_name, objects) log :delete_objects, 'bucket_name=%s' % bucket_name result = @s3.client.delete_objects({ bucket: bucket_name, delete: { objects: objects } }) log :delete_objects, result rescue StandardError => e log :delete_objects, e. false end |
#list_buckets ⇒ struct Aws::S3::Types::ListBucketsOutput
24 25 26 27 |
# File 'lib/prelands_rails/concerns/my_aws_client.rb', line 24 def list_buckets result = @s3.client.list_buckets({}) log :list_buckets, result.buckets.map(&:name) end |
#list_objects(bucket_name) ⇒ Object
49 50 51 52 53 54 55 56 57 |
# File 'lib/prelands_rails/concerns/my_aws_client.rb', line 49 def list_objects(bucket_name) log :list_objects, 'bucket_name=%s' % bucket_name result = (@s3.client.list_objects bucket: bucket_name).contents.map(&:key) log :list_objects, result result rescue StandardError => e log :list_objects, e. false end |
#move_file(s3_old_file_name, s3_new_file_name, bucket_name) ⇒ Object
Переместит файл в пределах bucket_name
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# File 'lib/prelands_rails/concerns/my_aws_client.rb', line 97 def move_file(s3_old_file_name, s3_new_file_name, bucket_name) log :move_file, ['', s3_old_file_name, ' moving to ', s3_new_file_name, ' in ', bucket_name, '.'].join('"') obj = Aws::S3::Object.new(bucket_name, s3_old_file_name, client: @s3.client) new_target = [bucket_name, s3_new_file_name].join('/') begin obj.move_to new_target rescue Aws::S3::Errors::NoSuchKey log :move_file, 'Aws::S3::Errors::NoSuchKey: The specified key does not exist: "%s"' % s3_old_file_name return false end obj = Aws::S3::Object.new(bucket_name, s3_new_file_name, client: @s3.client) begin obj.acl.put({ acl: ACL_PUBLIC_READ }) rescue Aws::S3::Errors::NoSuchKey log :move_file_acl_put, 'Aws::S3::Errors::NoSuchKey: The specified key does not exist: "%s"' % s3_old_file_name return false end true end |
#upload_file(path_to_file, s3_file_name, bucket_name) ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/prelands_rails/concerns/my_aws_client.rb', line 77 def upload_file(path_to_file, s3_file_name, bucket_name) begin obj = @s3.bucket(bucket_name).object s3_file_name begin if obj.get log :upload_file, [s3_file_name, ' exists, skipping..'].join('') end rescue Aws::S3::Errors::NoSuchKey => _e obj.upload_file path_to_file, acl: ACL_PUBLIC_READ log :upload_file, [s3_file_name, ' uploaded to "', bucket_name, '".'].join('') end rescue Aws::S3::Errors::NoSuchBucket => _e log :upload_file, 'No such bucket, create bucket: \'%s\'] ' % bucket_name create_bucket_if_not_exists bucket_name retry end end |