gpt4 book ai didi

node.js - 使用 AWS JavaScript SDK 时临时切换 AWS 凭证

转载 作者:太空宇宙 更新时间:2023-11-03 23:50:35 26 4
gpt4 key购买 nike

我正在编写一个在 Node 环境中的 AWS Lambda 上运行的 API。

我的目的是获取一组 AWS 凭证并在该 AWS 账户中创建一个 S3 存储桶。问题是,需要我将 AWS 凭证从运行 API 的凭证“切换”为传入的凭证。

在网上查看时,我发现 AWS Python SDK boto3 实际上允许您在初始化 S3 客户端时传递一组凭证,但我在适用于 AWS 的 JavaScript SDK 中没有看到类似的概念。

但是,我能够创建以下代码来实现我想要的效果:

    const {accessKeyId, secretAccessKey} = AWS.config;

// Switch to their credentials
AWS.config.update({
accessKeyId: env.awsAccessKey,
secretAccessKey: env.awsSecretKey
});

// Create the bucket in their AWS account (not ours)
const client = new AWS.S3();

await client.createBucket({
Bucket: env.rootBucket
}).promise();

// Switch credentials back
AWS.config.update({
accessKeyId,
secretAccessKey
});

我遇到的问题是,当我对 AWS.config 运行此全局更新时,我的 API 中的其他调用显然会受到影响 - 这不是预期的行为。有没有什么方法可以在 AWS JS SDK 中完成我想要的任务而不需要这样做?

如有任何帮助,我们将不胜感激。

谢谢!

最佳答案

创建多个 S3 客户端对象,每个对象代表一组不同的凭据(和/或不同的区域)。如果您的计算正在使用 IAM 角色运行,则只需使用默认的 S3 客户端构造函数即可使用这些凭证。要定位其他凭据/区域,请创建特定于该用例的 S3 客户端对象。

例如:

const s3_local = new AWS.S3(); // default credentials provider hierarchy
const s3_remote = new AWS.S3({accessKeyId: akid, secretAccessKey: skid});

关于node.js - 使用 AWS JavaScript SDK 时临时切换 AWS 凭证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59636442/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com