目前我正在node.js中执行lambda函数来获取我的AWS帐户的信息。当我想检索函数中所需的信息时遇到问题。我在控制台(console.log)中看到了信息,但回调()的响应中不存在该信息。我总是得到第一个回调的响应,而不是第二个回调的响应。我已经阅读了有关异步过程的信息,但我没有解决问题。你知道改进代码有什么变化吗?
代码如下:
var AWS = require('aws-sdk');
var iam = new AWS.IAM();
var s3 = new AWS.S3();
exports.handler = (event, context, callback) => {
var params1 = {};
iam.listUsers(params1, function(err, data) {
if (err)
console.log(err, err.stack);
else
console.log(data);
callback(null, data.Users);
});
var params2 = {};
s3.listBuckets(params2, function(err, data) {
if (err)
console.log(err, err.stack);
else
console.log(data);
callback(null, data.Buckets);
});
};
提前致谢。
最佳答案
由于 AWS Lambda 现在支持 Node 8,因此可以在下面找到示例代码:
const AWS = require('aws-sdk');
const iam = new AWS.IAM();
const s3 = new AWS.S3();
async function stackoverflow() {
let params1 = {};
let params2 = {};
try {
// synchronously call each method and store resolved promises.
let results1 = await iam.listUsers(params1).promise();
let results2 = await s3.listBuckets(params2).promise();
console.log(results1);
console.log(results2);
}
catch(e) {
console.error(e);
}
}
exports.handler = (event, context, callback) => {
stackoverflow();
};
关于node.js - 具有两个回调的 AWS Lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49601635/