根据AWS Lambda文档,用Node编写的Lambda函数将使用分配给该函数的IAM角色的凭证。用Python编写的函数也是如此。我在Node中编写了一个函数,但它得到了未授权的错误。使用相同配置的Python中相同的函数可以工作。在这两种情况下,我都使用官方的AWS开发工具包。
它在Python中而不是在Node中工作的事实告诉我这不是配置问题。如果将硬代码凭据放入Node函数中,则它可以工作,所以我知道函数逻辑可以工作。
有什么想法吗?
现在可以使用的代码(但昨天没有!)
// Load the AWS SDK for Node.js
const AWS = require('aws-sdk');
exports.handler = async (event) => {
const EC2 = new AWS.EC2();
var instanceId = "i-xxxxxxxxxxx";
var params = {
InstanceIds: [instanceId],
DryRun: false
};
var response = {
status: 200
};
try {
const startInstance = await EC2.startInstances(params, function(err, data) {
if (err) {
console.log("error: " + err.code);
response.status = 403;
response.error = err.code;
} else if (data) {
console.log(data);
response.instanceInfo = data;
}
}).promise();
} catch(err) {
console.log(err.code);
}
return response;
};