【问题标题】:AWS s3 - node sdk : Get Signed URL for an object in an encrypted bucketAWS s3 - node sdk:获取加密存储桶中对象的签名 URL
【发布时间】:2022-01-14 16:52:57
【问题描述】:

我正在使用 AWS s3 node-sdk 将对象放入 KMS 加密存储桶中。我想获取对象的signedURL,所以我可以用它来提供文件作为浏览器下载。目前,我正在做以下事情:

const url = s3.getSignedUrl('getObject', {
                    Bucket: bucketName,
                    Key: fileName,
                    Expires: signedUrlExpireSeconds
                })

我得到一个 url 作为响应。使用 URL,我在浏览器中收到以下错误

<Error>
<Code>InvalidArgument</Code>
<Message>
Requests specifying Server Side Encryption with AWS KMS managed keys require AWS Signature Version 4.
</Message>
<ArgumentName>Authorization</ArgumentName>
<ArgumentValue>null</ArgumentValue>
<RequestId>XXXXXXXXXXXXXXX</RequestId>
<HostId>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
</HostId>
</Error>

我一直在寻找使用 AWS 签名版本 4 的文档,但没有找到任何线索。如何使用节点 sdk 获取此加密对象的签名 URL?

【问题讨论】:

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


    【解决方案1】:

    这是 sdk 中的一个错误。您需要明确告诉它使用 v4。

    const s3 = new AWS.S3({maxRetries: 10, signatureVersion: "v4"});
    

    【讨论】:

      猜你喜欢
      • 2015-11-22
      • 1970-01-01
      • 2019-01-27
      • 1970-01-01
      • 2017-06-26
      • 1970-01-01
      • 1970-01-01
      • 2017-03-06
      • 2023-01-18
      相关资源
      最近更新 更多