在aws sdk版本3中指定s3客户端的签名版本

问题描述 投票:0回答:2

aws-sdk v2
对于 javascript,我们使用以下方式实例化 s3 客户端:

var s3  = new AWS.S3({
          accessKeyId: 'YOUR-ACCESSKEYID' ,
          secretAccessKey: 'YOUR-SECRETACCESSKEY' ,
          s3ForcePathStyle: true,
          signatureVersion: 'v4'
});  

在这里您可以看到可以指定

signatureVersion

v3
中,您使用以下方法实例化客户端:

import { S3Client } from '@aws-sdk/client-s3';

credentials = {  
    accessKeyId: <ACCESS_KEY>,
    secretAccessKey: <SECRET_ACCESS_KEY>
  }
const client = new S3Client({
        region: 'us-east-1',
        credentials: credentials,
        forcePathStyle: true,
    })  

文档对于如何执行此操作不是很清楚(并且没有示例)。我如何在 sdk 版本(v3)中为客户端指定

signatureVersion

node.js amazon-web-services amazon-s3 aws-sdk-js
2个回答
3
投票

我刚刚从旧的 s3 客户端迁移到新的 s3 客户端。

我之前曾经指定

signatureVersion: 'v4'
因为这个问题(我们必须上传带有空格的文件)。

自从迁移以来我没有遇到过这个问题,所以我认为可以安全地假设他们默认使用版本 4 签名。

而且由于它们没有公开

signatureVersion
配置选项,我想说也可以安全地假设您 不能 使用新 SDK 使用签名版本 2。

--

[编辑] 检查他们的文档:https://docs.aws.amazon.com/AmazonS3/latest/API/bucket-policy-s3-sigv4-conditions.html

"AWS" identifies Signature Version 2

"AWS4-HMAC-SHA256" identifies Signature Version 4

因此您应该能够检查

X-Amz-Algorithm
查询参数来确定。


0
投票

此页面他们说:

对于所有 AWS 区域,AWS 开发工具包默认使用签名版本 4 对请求进行身份验证。使用 2016 年 5 月之前发布的 AWS 开发工具包时,您可能需要请求签名版本 4,如下表所示。

自从 v3 SDK 于 2020 年发布以来,它应该使用签名版本 4。

© www.soinside.com 2019 - 2024. All rights reserved.