小编And*_*ong的帖子

尝试生成预先签名的 url 链接,以便用户可以下载 Amazon S3 对象,但收到无效请求

我目前正在使用带有服务器端客户提供的加密密钥 (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)

ruby-on-rails amazon-s3 amazon-web-services

5
推荐指数
1
解决办法
1941
查看次数