我将 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/