Обновите метаданные объекта S3, используя Ruby - PullRequest
0 голосов
/ 10 марта 2020

Я новичок в 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...