我想通过 node.js 应用程序完全控制我的 S3 存储桶,因此我使用 aws-sdk (
@aws-sdk/client-s3
v3).
我希望 sdk API 选择 IAM 用户的凭证(AccessKey 和 SecretToken)(附加完整的存储桶控制策略),这是我在 S3Client 实例化期间提供的。
类似这样的事情
const s3Config = {
region: 'ap-south-1',
accessKeyId: 'accessKeyId',
secretAccessKey: 'secretAccessKey'
};
const s3 = new S3Client(s3Config);
s3.send() //Create, Read etc operations
但事实证明,sdk 从
.aws/credentials
文件中选择凭证,特别是会话令牌。
我已经创建了一个 IAM 管理员用户,并使用管理员用户创建了一个附加了 fill
AmazonS3BucetPolicy
的新用户,是的,我正在使用上面的这些凭证,但我收到会话令牌过期错误。
我希望我的节点应用程序询问用户 AccessKeyId 和 SecretKey 以将请求发送到 aws 并获取适当的响应,而不是依赖于会话令牌。
P.S 如果我不能很好地表达我的观点,请原谅我
我尝试将凭据传递给 S3Client 构造函数。并且响应是过期令牌,要求我使用 aws sso 登录命令获取新的令牌
修改您提供 IAM 用户凭证的方式,如下所示:
const { S3Client } = require("@aws-sdk/client-s3");
const s3Config = {
region: 'ap-south-1',
credentials: {
accessKeyId: 'xxx',
secretAccessKey: 'yyy'
}
}
const client = new S3Client(s3Config);