如何将从s3检索到的对象写入文件?

时间:2018-01-06 08:35:11

标签: ruby-on-rails ruby amazon-web-services encryption amazon-s3

我正在使用加密数据,然后再将数据发送到亚马逊s3。这是示例代码,我已经改变了一点来加密和上传mp3文件。

https://docs.aws.amazon.com/sdkforruby/api/Aws/S3/Encryption.html

require 'openssl'
key = OpenSSL::PKey::RSA.new(1024)

# encryption client
s3 = Aws::S3::Encryption::Client.new(encryption_key: key)

# round-trip an object, encrypted/decrypted locally
s3.put_object(bucket:'aws-sdk', key:'secret', body: open('song.mp3'))
s3.get_object(bucket:'aws-sdk', key:'secret').body.read

我如何get_object并将其写入文件以便可以检索原始mp3?

2 个答案:

答案 0 :(得分:2)

确定可以使用此代码

  IO.write('testing.mp3', s3e.get_object(bucket:'aws-sdk', key:'secret').body.read)

它将写入一个新文件testing.mp3。谢谢!

答案 1 :(得分:1)

之前忽略my comment from,因为Aws::S3::Encryption::Client是来自Aws::S3::Client#get_object的派生类,您可以提供后者接受的所有参数。其中一个允许直接将文件写入磁盘:

# stream object directly to disk
resp = s3.get_object(
  response_target: '/path/to/file',
  bucket: 'bucket-name',
  key: 'object-key')