Node.js 在AWS Lambda代码的相同函数中运行两个AWS方法
我正在创建一个AWS Lambda脚本来检索我的AWS帐户的信息。目前,我在函数3中遇到一个问题,我想检索具有策略的用户,在本例中,我运行方法检索列表用户,然后运行方法根据用户输入检索策略,并将其发送到回调的数组。问题是回调是空的。我已经通过console.log(userpolicies)进行了测试;在第二个方法中是可以的,但是当它离开第二个方法时,UserPolicys是空白的 我理解这个问题是因为我在同一个函数中有两个aws方法,但我不知道如何解决 你有什么建议吗 提前谢谢Node.js 在AWS Lambda代码的相同函数中运行两个AWS方法,node.js,asynchronous,async-await,aws-lambda,async.js,Node.js,Asynchronous,Async Await,Aws Lambda,Async.js,我正在创建一个AWS Lambda脚本来检索我的AWS帐户的信息。目前,我在函数3中遇到一个问题,我想检索具有策略的用户,在本例中,我运行方法检索列表用户,然后运行方法根据用户输入检索策略,并将其发送到回调的数组。问题是回调是空的。我已经通过console.log(userpolicies)进行了测试;在第二个方法中是可以的,但是当它离开第二个方法时,UserPolicys是空白的 我理解这个问题是因为我在同一个函数中有两个aws方法,但我不知道如何解决 你有什么建议吗 提前谢谢 var
var AWS = require('aws-sdk');
var async = require('async');
var stackoverflow = (event, context, callback) => {
var iam = new AWS.IAM();
async.series([
//function1
function(callback) {
iam.listGroups(function(err, data) {
if (err) {
callback(err);
} else
callback(null, data);
});
},
//function2
function(callback) {
iam.listPolicies(function(err, data) {
if (err) {
callback(err);
} else
callback(null, data);
});
},
//function3
function(callback) {
var userpolicies = [];
iam.listUsers(function(err,data) {
if (err)
console.log(err);
else
for (var i = 0; i < data.Users.length; i++) {
var params = {UserName: data.Users[i].UserName};
iam.listAttachedUserPolicies(params, function(err1, data1){
if (err1)
console.log(err1);
else
for (var j = 0; j < data1.AttachedPolicies.length; j ++) {
var infopolicies = '{"PolicyName":"'+data1.AttachedPolicies[j].PolicyName+'"}';
var infopoliciesjson = JSON.parse(infopolicies);
userpolicies.push(infopoliciesjson);
}
});
}
callback(null, userpolicies);
});
}
], callback);
};
exports.handler = stackoverflow;
var AWS=require('AWS-sdk');
var async=require('async');
var stackoverflow=(事件、上下文、回调)=>{
var iam=新的AWS.iam();
异步系列([
//功能1
函数(回调){
iam.listGroups(函数(错误、数据){
如果(错误){
回调(err);
}否则
回调(空,数据);
});
},
//功能2
函数(回调){
iam.ListPolicys(函数(错误、数据){
如果(错误){
回调(err);
}否则
回调(空,数据);
});
},
//功能3
函数(回调){
var userpolicies=[];
iam.listUsers(函数(错误、数据){
如果(错误)
控制台日志(err);
其他的
对于(var i=0;i
您没有将任何请求参数传递给任何iam.xxx()
方法,只传递回调函数。目前还不清楚这段代码是如何工作的。有些方法的参数是可选的,有些是必需的,例如:ListPolicys、listGroups和listUsers。参数是可选的,但对于ListAttachedUserPolicys,我们需要输入用户名。