amazon-web-services - 使用 AWS-SDK JS V3 实例化 S3 类时出现“缺少凭据”错误
问题描述
class S3
从较新的 aws-sdk javascript v3创建 S3 客户端时出现错误。
我添加了 aws 配置参数,包括从aws sts
用户在服务级别(实例化 S3 类时)获得身份验证(假设具有调用权限的角色getObject
)以及其他参数时获得的凭据。请参阅下面的代码:
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);
}
}
我检查了repo 中的class S3
代码,aws-sdk-js-v3
似乎不需要“凭据”构造函数配置参数。难道我做错了什么?
解决方案
只是为了澄清 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
});
对于 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
});
AWS SDK 文档、类参考或 SDK 版本 3 的开发人员指南中找不到此更改。感谢 Chris 和 @Waleed93 解决这个问题。
推荐阅读
- javascript - 从nodejs获取json数据到Angular 6
- python - 自动编码器最后一层的 Keras 尺寸不匹配
- python - 熊猫中的连接和移位列适用
- php - 如何使用 PHP Xdebug 处理来自其他设备的请求?
- azure - Azure Kubernetes 上的块存储挂载错误
- c++ - 在 C++ 中使用您自己的 Matrix 类进行 OpenGL 对象旋转
- wordpress - 如何将现有代码转换为 WooCommerce 插件
- javascript - 如何使用jquery验证网址
- google-places-api - 使用 google place API 获取一个国家所有驾驶学校的列表,但我只能使用 API 获得其中的 60 个,知道问题出在哪里吗?
- flask - 如何通过命令行 flask run 启动 Flask 和 Flask-SocketIO