使用永久凭证访问AWS S3存储桶

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

我想通过 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 登录命令获取新的令牌

amazon-web-services amazon-s3
1个回答
0
投票

修改您提供 IAM 用户凭证的方式,如下所示:

const { S3Client } = require("@aws-sdk/client-s3");

const s3Config = {
    region: 'ap-south-1',
    credentials: {
        accessKeyId: 'xxx',
        secretAccessKey: 'yyy'
    }
}

const client = new S3Client(s3Config);
© www.soinside.com 2019 - 2024. All rights reserved.