我目前正在使用带有服务器端客户提供的加密密钥 (SSE-C) 的 Ruby aws-sdk 版本 2 gem。我可以毫无问题地将对象从 rails 表单上传到 Amazon S3。
def s3
Aws::S3::Object.new(
bucket_name: ENV['S3_BUCKET'],
key: 'hello',
)
end
def upload_object
customer_key = OpenSSL::Cipher::AES.new(256, :CBC).random_key
customer_key_md5 = Digest::MD5.new.digest(customer_key)
object_key = 'hello'
options = {}
options[:key] = object_key
options[:sse_customer_algorithm] = 'AES256'
options[:sse_customer_key] = customer_key
options[:sse_customer_key_md5] = customer_key_md5
options[:body] = 'hello world'
options[:bucket] = ENV['S3_BUCKET']
s3.put(options)
test_params = {
object_key: object_key,
customer_key: Base64.encode64(customer_key),
md5_key: Base64.encode64(customer_key_md5),
}
Test.create(test_params)
end
Run Code Online (Sandbox Code Playgroud)
但是我在检索对象并生成签名的 url 链接供用户下载时遇到了一些问题。
def retrieve_object(customer_key, md5)
options = {}
options[:key] = 'hello …Run Code Online (Sandbox Code Playgroud)