javascript - Nodejs AWS Lambda 切换到另一个帐户访问权限和 key 以执行功能

标签 javascript node.js amazon-web-services aws-lambda aws-sdk-js

我将 Node 与 lambda 和 AWS Javascript SDK 结合使用。我有一个 Angular 色附加到 lambda 函数,允许我需要做的访问。我希望能够接受用户输入的访问 key 和 key ,并更新我的 AWS 配置以使用这些更新的凭证执行新操作。到目前为止

let AWS = require("aws-sdk");  // I do the normal import 
let ddb = new AWS.DynamoDB({apiVersion: '2012-10-08'});  // do some dynamo action 

....

然后使用这些有权访问另一个帐户资源的 key

AWS.config = new AWS.Config({
    accessKeyId: data.accessKey,
    secretAccessKey: data.secretAccessKey
}); 

当我执行新任务时,它只使用 lambda Angular 色提供的权限,而不是更新后的 AWS 凭证。有什么想法吗?

最佳答案

当您更新 AWS.config 时,它会更新 AWS 对象。 创建的任何 AWS 服务对象(S3、EC2、DynamoDB 等)对象将拥有更新的凭据。它不会更新在 AWS.config 更新之前创建的任何服务对象。

正如 AWS Guru @johnrotenstein 所建议的,您应该在更新配置之后创建您的服务对象。如果此时您的ddb 对象已经创建,只需将其重新声明为new DynamoDB({...})

const AWS = require('aws-sdk')
AWS.config = new AWS.Config({
    accessKeyId: data.accessKey,
    secretAccessKey: data.secretAccessKey
})
let ddb = new AWS.DynamoDB({apiVersion: '2012-10-08'})

另一个可能更简单的解决方案是在服务对象的配置属性上使用更新方法:

const AWS = require('aws-sdk')
let ddb = new AWS.DynamoDB({apiVersion: '2012-10-08'})
ddb.config.update({accessKeyId: '', secretAccessKey: ''})
// ddb will now use the new credentials for future calls

关于javascript - Nodejs AWS Lambda 切换到另一个帐户访问权限和 key 以执行功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50979344/

相关文章:

javascript - 使用 javascript 的返回值作为 struts if 标签中的条件

c# - NodeJS 中是否有任何 C# GetAwaiter 等效项

javascript - 如果我们正在循环访问当前项目,哪个 for/forEach 的性能更高?

android - 如何获取 Android Amazon Web Services (AWS) SDK 与 AWS 模拟(例如 FakeS3)一起使用

javascript - 有没有办法在表单实际更改时检查表单?

javascript - 重复 ID 的影响

javascript - jQuery 使用输入 onChange 的值更新 div

linux - 如何在安装了 fun_plug 0.5 的 D-Link DNS 325 上编译 NodeJS?

amazon-web-services - 如何从 Amazon ECS 任务获取退出代码?

amazon-web-services - AWS CodeBuild golang 构建失败