gpt4 book ai didi

ruby - SignatureDoesNotMatch 使用 ruby​​ aws-sdk gem 和预签名 pos

转载 作者:数据小太阳 更新时间:2023-10-29 07:37:41 26 4
gpt4 key购买 nike

我需要一些帮助来获得新的 ruby AWS S3 SDK 2.0在职的。我正在使用 eu-central-1 区域,因此所有请求都需要使用最新的签名方法 v4

实际上我想创建一个预签名的帖子 url 以将其与 jquery-fileupload 结合使用。我已经使用所有访问 key 、存储桶、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'

最佳答案

预签名 URL 包含根据将/应该发送的 header 和查询参数计算得出的签名。可能发生的情况是 jquery uploader 正在添加 Amazon S3 需要签名的 header (例如 Content-Type)。在构建预签名 url 时,您需要预先指定此内容类型:


签名者 = Aws::S3::Presigner.new
signer.presigned_url(:put_object, bucket:'name', key:'key', acl:'public-read', content_type:'...')

此外,正确的标准 ACL 是“public-read”,而不是 :public_read。这也可能导致问题。

关于ruby - SignatureDoesNotMatch 使用 ruby​​ aws-sdk gem 和预签名 pos,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28346457/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com