我正在尝试使用 lambda 函数列出特定区域中的所有 EC2 实例。这是我的代码:
const AWS = require('aws-sdk');
AWS.config.region = '******';
exports.handler = async function(event) {
const promise = new Promise(function(resolve, reject) {
const ec2 = new AWS.EC2();
ec2.describeInstances( function(err, data) {
console.log("\nIn describe instances:\n");
if (err) console.log(err, err.stack); // an error occurred
else console.log("\n\n" + data + "\n\n"); // successful response
context.done(null, 'Function Finished!');
})
resolve("Data");
})
return promise;
}
我得到执行结果:成功但没有真正返回任何实例。
最佳答案
const AWS = require('aws-sdk');
AWS.config.region = '******';
exports.handler = async function(event) {
const promise = new Promise(function(resolve, reject) {
const ec2 = new AWS.EC2();
ec2.describeInstances(function(err, data) {
console.log("\nIn describe instances:\n");
if (err) {
console.log(err, err.stack); // an error occurred
reject(err);
} else {
console.log("\n\n" + data + "\n\n"); // successful response
resolve(data);
}
})
});
return promise;
}
因此,我们有一个 promise ,如果成功,将通过数据解决该 promise ;如果描述实例失败,将通过错误拒绝该 promise 。
请注意,我们将 data
变量传递到 resovle
中,而不仅仅是“Data”字符串,这在以前没有任何意义。
此外,请记住,使用此代码,您的 lambda 函数将从 describeInstances
响应返回原始输出。如果您需要过滤某些数据或添加其他逻辑,则需要在 resolve
之前执行此操作,并将结果传递给 resolve
,或 await
获取结果当然,对数据执行任何您需要的操作并返回结果。
关于javascript - 使用 Node.Js 的 Lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62550731/