带有get_object的presigned-url的SignatureDoesNotMatch

时间:2018-01-24 01:47:02

标签: ruby amazon-s3 aws-sdk pre-signed-url aws-sdk-ruby

非常简单的东西(我想)。我尝试创建一个预先签名的网址,然后我可以使用它来下载文件。这些密钥对应的IAM用户拥有fullS3Acess,直到我能弄清楚为什么这个签名不起作用。

  def presigned_url
    document = Document.find(params[:id])

    signer = get_presigner
    signer.presigned_url(:get_object, bucket: ENV['S3_BUCKET_NAME'], key: document.s3_path)
  end

  def get_presigner
    credentials = Aws::Credentials.new(
        ENV['FULL_AWS_ACCESS_KEY_ID'],
        ENV['FULL_AWS_SECRET_ACCESS_KEY']
    )
    client = Aws::S3::Client.new(
        region: 'us-west-2',
        credentials: credentials
    )
    Aws::S3::Presigner.new(client: client)
  end

当我尝试在浏览器中打开时,从presigned_url方法返回的url会导致SignatureDoesNotMatch错误。关于为什么这是真的任何想法?我认为我已经排除了权限作为答案,因为我已将用户的IAM权限提高到超出应有的范围。有什么想法吗?

0 个答案:

没有答案