Wal*_*d93 6 amazon-s3 amazon-web-services aws-sdk aws-sdk-js
I am getting en error when creating S3 client from class S3 in newer v3 of aws-sdk javascript.
I add aws config parameters including credentials obtained from aws sts when user gets authenticated (assuming a role with permission to call getObject) at service-level (when instantiating S3 class) along with other parameters. See my code below:
const { S3, ... } = require("@aws-sdk/client-s3");
someFunc();
function someFunc(authUserCredentials) {
...
try {
const { AccessKeyid, SecretKey, SessionToken } = authUserCredentials;
const s3Client = new S3({
signatureVersion: 'v4',
accessKeyId: AccessKeyId,
secretAccessKey: SecretKey,
sessionToken: SessionToken,
region: 'us-east-1',
});
console.log(s3Client.config);
...
}catch(e) {
console.error(e);
}
}
Run Code Online (Sandbox Code Playgroud)
I checked the class S3 code in aws-sdk-js-v3 repo, and there doesn't seem to be no 'Credential' constructor config argument required. Am I doing something wrong?
只是为了澄清 Chris Williams 的回答以及@Waleed93 的第二条评论,过去与 AWS Javascript SDK v2 一起使用的是:
import S3 from 'aws-sdk/clients/s3';
const AccessKeyId = xxxxx,
SecretKey = yyyyyyyy,
SessionToken = zzzzzzzzzz;
const s3Client = new S3({
apiVersion: '2006-03-01',
region: 'us-east-1',
accessKeyId: AccessKeyId,
secretAccessKey: SecretKey,
sessionToken: SessionToken
});
Run Code Online (Sandbox Code Playgroud)
对于 SDK v3,构造函数不再接受单个凭证参数,而是将“凭证”对象作为参数。有效的是:
const { S3 } = require('@aws-sdk/client-s3');
const AccessKeyId = xxxxx,
SecretKey = yyyyyyyy,
SessionToken = zzzzzzzzzz;
const creds = {
accessKeyId: AccessKeyId,
secretAccessKey: SecretKey,
sessionToken: SessionToken
};
const s3Client = new S3({
apiVersion: '2006-03-01',
region: 'us-east-1',
credentials: creds
});
Run Code Online (Sandbox Code Playgroud)
在 AWS 开发工具包文档、类参考或开发工具包版本 3 的开发人员指南中找不到此更改。感谢 Chris 和 @Waleed93 解决这个问题。
根据构造函数的文档,这些参数是有效的。
名称为 Credential 的 Credential 对象仍然有一个参数名称credentials。如果您实例化AWS.Credentials对象,则可以将其传递到该参数中。
凭据的值应该是一个包含传递到配置中的凭据的对象,如下所示:
import { S3Client, GetObjectCommand } from '@aws-sdk/client-s3'
const CREDENTIAL = {
accessKeyId: 'accesKeyIdString',
secretAccessKey: 'secretAccessKeyIdString',
};
const REGION: 'aws region';
const s3Client = new S3Client({region: REGION, credentials: CREDENTIAL});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
944 次 |
| 最近记录: |