【问题标题】:Signature issues when creating signed URL for S3为 S3 创建签名 URL 时的签名问题
【发布时间】:2017-02-15 03:31:16
【问题描述】:

我在为 public S3 存储桶生成签名 URL 时遇到问题。我在执行 PUT 请求时遇到问题:

<Error><Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>

一些信息 - 我正在使用:

  • node 5.8版
  • aws-sdk2.7.10 版

我像这样使用aws-sdk

AWS.config.update({
  accessKeyId: ACCESS_KEY,
  secretAccessKey: SECRET_ACCESS_KEY,
  region: 'eu-west-1'
})
const s3 = new AWS.S3()

我以这种方式生成 URL:

const params = {
  Key: FILE_KEY,
  Bucket: BUCKET_NAME,
  ContentType: image/jpeg,
  Expires: 60,
  ACL: 'public-read',
  Metadata: {
    'Cache-Control': 'max-age=31556926'
  }
}

const signedUrl = s3.getSignedUrl('putObject', params)

生成的 URL 如下所示:

https://companyxyz.s3-eu-west-1.amazonaws.com/
image/5843df4a15c6fccf4501cab9.jpg?
AWSAccessKeyId=xxxxxxxxxx&
Content-Type=image%2Fjpeg&
Expires=1480843142&
Signature=YvUEGntDLVUUuyVuDMxF5yXXBnI%3D
&x-amz-acl=public-read&
x-amz-meta-cache-control=max-age%3D31556926

【问题讨论】:

  • 检查您的访问密钥,如下所示:stackoverflow.com/a/8002444/2383685。您的代码看起来不错。
  • 感谢您的建议!我已经非常详细地研究了它,但它似乎并没有解决我的问题

标签: node.js amazon-web-services amazon-s3


【解决方案1】:

可能与 sig v2 和 sig v4 有关

从这里的文档: http://docs.aws.amazon.com/general/latest/gr/signature-version-2.html 和这里 http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html

请注意,在 sig v4 中,

https://s3.amazonaws.com/examplebucket/test.txt
?X-Amz-Algorithm=AWS4-HMAC-SHA256
&X-Amz-Credential=<your-access-key-id>/20130721/us-east-1/s3/aws4_request

您的访问密钥 ID 是 X-Amz-Credential 的一部分

对于 sig v2

https://elasticmapreduce.amazonaws.com?
&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE

AWSAccessKeyId 有自己的参数。

您的示例表明您正在使用 sig v2

http://docs.aws.amazon.com/general/latest/gr/signature-version-2.html 还提到有些地区不支持sig v2

欧盟(法兰克福)地区 欧盟(伦敦)地区

欧盟(法兰克福)是 eu-central-1 这很奇怪,因为它 sig v2 不应该在 eu-central-1 中工作。

【讨论】:

    【解决方案2】:

    我通过更改 region 解决了这个问题。我在eu-central-1 中创建了一个新存储桶,一切正常。无论如何,我无法为eu-west-1 生成有效的签名 URL。

    很想听听任何见解。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-01
      相关资源
      最近更新 更多