Скопируйте BLOB-объект из S3 в Swift, используя гем aws-sdk

У меня есть куча капель, хранящихся в Amazon S3. Ruby aws-sdk gem, кажется, поддерживает Swift, нам просто нужно передать конечную точку:

swift_client = Aws::S3::Resource.new(
  endpoint: 'https://swift.me.com/,
  bucket: 'bucket',
  credentials: Aws::Credentials.new(access_key_id, secret_access_key))
swift_bucket = swift_client.bucket('bucket')

s3_client = Aws::S3::Resource.new(
  region: 'us-east-1',
  bucket: 'bucket',
  credentials: Aws::Credentials.new(access_key_id, secret_access_key))
s3_bucket = s3_client.bucket('s3-bucket')

# This object exists, s3_object.exists? => true
s3_object = s3_bucket.object('SOMEUID') 
swift_object = swift_bucket.object('SOMEUID') # UID is the same as in S3
# I want to copy s3 object to swift, so I do:
swift_object.copy_from(copy_source: "#{s3_bucket.name}/#{s3_object.key}")

На этом этапе я получаю "Aws::S3::Errors::NoSuchKey: указанный ключ не существует.". Если я делаю то же самое наоборот (от Swift до S3), он работает нормально.

Можно ли даже скопировать данные из S3 в Swift, используя gem aws-sdk, или я должен искать другой инструмент?

1 ответ

Решение

Решением было копирование контента вручную, поскольку Swift не создает объект в copy_from выполнение.

to_object.put(body: object.get.body)
Другие вопросы по тегам