【发布时间】:2015-02-05 14:24:52
【问题描述】:
我需要一些帮助才能让新的 ruby AWS S3 SDK 2.0 正常工作。我使用的是eu-central-1区域,所以所有请求都需要使用最新的签名方法v4。
实际上我想创建一个预签名的帖子 url 以将其与 jquery-fileupload 结合使用。我已经使用所有访问密钥、存储桶、CORS 配置等正确设置了 S3。但是每次我使用以下代码生成 url 时
@signer = Aws::S3::Presigner.new
@url = @signer.presigned_url(:put_object, bucket: ENV['S3_BUCKET_NAME'], key: "documents/#{SecureRandom.uuid}/${filename}", acl: :public_read)
创建以下 URL
https://project-xxxxx-staging.s3.eu-central-1.amazonaws.com/documents/a253feb0-4c60-4735-8d95-4649c0d3dcb5/%24%7Bfilename%7D?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJVY57LY6XGIRIRHQ%2F20150205%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20150205T140425Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&x-amz-acl=public_read&X-Amz-Signature=ff2fbe233ed7380dc745aa7ba37421d7d8703db0d67208541e500367262a8c51
我收到以下错误
<Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>
有人知道如何解决这个问题或对潜在问题有任何提示吗?
我正在使用的环境:
ruby '2.2.0'
gem 'rails', '4.2.0'
gem 'aws-sdk', '~> 2.0.21.pre'
【问题讨论】: