我使用Node.js设置Lambda函数,该函数将传递实例ID,然后通过调用“ec2.startInstances”启动该实例。
我很困惑为什么Lambda函数关心它当前正在执行的帐户,尤其是当我向具有我指定的实例的帐户声明正确的accesskeyid,secretaccesskey和region时。
此处的用例是拥有一个具有lambda函数的主帐户,该帐户可以调用不驻留在主帐户上的实例的启动或停止。
我已经阅读并看到了一些如何通过在帐户A和帐户B等上指定正确的IAM角色和权限来执行此操作的示例。但是,当您拥有数百或数千个帐户时,此解决方案将变得乏味。
我正在寻找一种使用Lambda的方法,就像我通过node.js或powershell等在笔记本电脑上本地使用AWS SDK一样。我只是不明白为什么要指定凭据另一个帐户对于Lambda来说还不够
以下是我正在使用的代码:
var AWS = require('aws-sdk');
exports.handler = function(event, context) {
var instanceId = event.instanceid;
AWS.config = new AWS.Config();
AWS.config.accessKeyId = "accesskey";
AWS.config.secretAccessKey = "secretkey";
AWS.config.region = "us-west-2";
var ec2 = new AWS.EC2();
console.log('instanceid:' + instanceId);
var params = {
InstanceIds: [ 'i-sdakuyvsdx' ]
};
ec2.startInstances(params, function(err, data) {
if (err) { context.fail(err); }
else { context.succeed(instanceId + ' successfully started.'); }
});
};
以下是我遇到的错误:
“errorMessage”:“实例ID'i-sdakuyvsdx'不存在”, “errorType”:“InvalidInstanceID.NotFound”,