class PrelandsRails::MyAwsClient
Constants
- ACL_PUBLIC_READ
Public Class Methods
new(access_key, secret_key, region)
click to toggle source
# 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
Public Instance Methods
bucket_objects_count(bucket_name)
click to toggle source
# 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)
click to toggle source
@return [True]
# 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.message false end
delete_bucket(bucket_name)
click to toggle source
# 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.message false end
delete_objects(bucket_name, objects)
click to toggle source
# 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.message false end
list_buckets()
click to toggle source
@return [struct Aws::S3::Types::ListBucketsOutput]
# 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)
click to toggle source
# 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.message false end
upload_file(path_to_file, s3_file_name, bucket_name)
click to toggle source
@param [String] path_to_file Абсолютный к файлу на хосте. @param [String] s3_file_name Под каким именем будет сохранён файл на AWS. @param [String] bucket_name Название bucket
# 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
Private Instance Methods
log(method, output)
click to toggle source
# File lib/prelands_rails/concerns/my_aws_client.rb, line 97 def log(method, output) Rails.logger.info "\r\t\e[33m\e[1m<MyAwsClient.%s> %s\e[0m" % [method, output] nil end