Node.js 在AWS Lambda代码的相同函数中运行两个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

我正在创建一个AWS Lambda脚本来检索我的AWS帐户的信息。目前,我在函数3中遇到一个问题,我想检索具有策略的用户,在本例中,我运行方法检索列表用户,然后运行方法根据用户输入检索策略,并将其发送到回调的数组。问题是回调是空的。我已经通过console.log(userpolicies)进行了测试;在第二个方法中是可以的,但是当它离开第二个方法时,UserPolicys是空白的

我理解这个问题是因为我在同一个函数中有两个aws方法,但我不知道如何解决

你有什么建议吗

提前谢谢

    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,我们需要输入用户名。