在AWS Lambda代码

时间:2018-04-22 22:15:16

标签: node.js asynchronous async-await aws-lambda async.js

我正在创建AWS Lambda脚本以检索我的AWS账户的信息。目前我在函数3中遇到问题,我想检索具有策略的用户,在这种情况下,我运行方法来检索列表用户,然后运行该方法以根据用户输入检索策略将它发送到数组到回调。问题是回调是空的。我已经通过console.log(userpolicies)进行了测试;并且在第二种方法中没问题但是当它超出第二种方法时,userpolicies是空白的。

我知道问题是因为我在同一个功能中有两个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;

0 个答案:

没有答案