Я новичок в ruby и AWS. Я пытаюсь обновить метаданные объекта S3, добавив к нему метку времени. Имя моего файла имеет формат xy_apple.zip xy_mango.zip
Я планирую передать имя плода в переменной fruit
И метаданные всего файла имеют Key: x-amz-meta-time_stamp value : 1583273888
Я пытаюсь добавить еще одно значение для метаданных с Key: x-amz-meta-20200309211255 value : 500
. Здесь я обновлю ключ, чтобы текущая отметка времени была в конце, а значение всегда было постоянным и равно 500
def deploy fruit
file_name = "xy_" + fruit + ".zip"
bucket_name = my_s3_bucket
s3 = get_aws_client(:s3, {region: 'us-east-1'})
bucket = s3.bucket('my_s3_bucket')
if bucket.object(file).exists?
update_metadata bucket_name, file_name
else
puts "File '/#{bucket_name}/#{file_name}' is not in S3 bucket!"
end
end
def update_metadata bucket_name, file_name
s3_client = get_aws_client(:s3, {region: 'us-east-1'})
option_base = {
bucket: bucket_name,
key: file_name
acl: "public-read",
}
object = s3_client.get_object(option_base)
new_metadata = object.metadata.merge(new_metadata + Time.new.strftime('%Y%m%d%H%M%S'))
metadata_value = "500"
if metadata.key?('time_stamp')
object.copy_to(object,
bucket: bucket_name,
acl: "public-read",
metadata: {
new_metadata => metadata_value,
},
metadata_directive: "REPLACE"
)
end
end
Ошибка:
.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/aws-sdk-core-3.90.1/lib/aws-sdk-core/param_validator.rb:33:in `validate!': unexpected value at params[:acl] (ArgumentError)