Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用节点从AWS数据获取消息字符串的回调帮助_Node.js_Aws Lambda_Aws Sdk - Fatal编程技术网

Node.js 使用节点从AWS数据获取消息字符串的回调帮助

Node.js 使用节点从AWS数据获取消息字符串的回调帮助,node.js,aws-lambda,aws-sdk,Node.js,Aws Lambda,Aws Sdk,我在aws sdk中使用Node.Js来填充var消息。 1) 首先,我调用一个函数来获取AWS组,然后将其连接到消息。 2) 其次,我根据第一个函数的数据调用另一个函数,然后将其连接到消息。 最后,我发送了一封电子邮件并使用了消息字符串。 问题:如何连接字符串消息并将其传递给函数sendmail 这是我的密码 var aws = require('aws-sdk'); var ses = new aws.SES({region: 'us-east-1'}); var iam = new aws

我在aws sdk中使用Node.Js来填充
var消息
。 1) 首先,我调用一个函数来获取AWS组,然后将其连接到消息。 2) 其次,我根据第一个函数的数据调用另一个函数,然后将其连接到消息。 最后,我发送了一封电子邮件并使用了消息字符串。 问题:如何连接字符串
消息
并将其传递给函数sendmail

这是我的密码

var aws = require('aws-sdk');
var ses = new aws.SES({region: 'us-east-1'});
var iam = new aws.IAM({apiVersion: '2010-05-08'});

exports.handler = function (event, context) {
    console.log("Incoming: ", event);
    var message = "";

    function AwsListGroupsFunction(err, data) 
    {
        if (err) console.log(err, err.stack); // an error occurred
        else
        {
            //Get AWS Groups from AWS Account
            var dataCount = data.Groups.length-1;
            for (var key in data.Groups) 
            {
                message+= data.Groups[key].GroupName
                // Then get all users associated to the GroupName
                var groupParams = { GroupName: data.Groups[key].GroupName};
                iam.getGroup(groupParams, AwsGetGroupFunction); // end of else for if iam.getGroup

                if (key != dataCount)
                    message += ', ';
            }
        }
        return message;
    };

    function AwsGetGroupFunction(err, data) {
        if (err) console.log(err, err.stack); // an error occurred
        else{
            // successful response
            message+= "<br/>";
            for (var userKey in data.Users) {
                message += data.Users[userKey].UserName + ' and PasswordLastUsed: ' + data.Users[userKey].PasswordLastUsed + ' , ';
            }                      

        }
        return message;
    };

    function SendEmail(message){
   console.log('===SENDING EMAIL HERE using message variable===');

    }


    // This is the only function called which calls other functions
    var params = {};  
    iam.listGroups(params, AwsListGroupsFunction);

};
var aws=require('aws-sdk');
var ses=新的aws.ses({region:'us-east-1'});
var iam=新的aws.iam({apiVersion:'2010-05-08'});
exports.handler=函数(事件、上下文){
日志(“传入:”,事件);
var message=“”;
函数AwsListGroupsFunction(错误,数据)
{
if(err)console.log(err,err.stack);//发生错误
其他的
{
//从AWS帐户获取AWS组
var dataCount=data.Groups.length-1;
for(data.Groups中的变量键)
{
message+=data.Groups[key].GroupName
//然后获取与GroupName关联的所有用户
var groupParams={GroupName:data.Groups[key].GroupName};
iam.getGroup(groupParams,AwsGetGroupFunction);//if iam.getGroup的else结束
如果(键!=数据计数)
消息+=',';
}
}
返回消息;
};
函数AwsGetGroupFunction(错误,数据){
if(err)console.log(err,err.stack);//发生错误
否则{
//成功响应
消息+=“
”; for(data.Users中的var userKey){ message+=data.Users[userKey].UserName+'和PasswordLastUsed:'+data.Users[userKey].PasswordLastUsed+','; } } 返回消息; }; 功能发送电子邮件(消息){ log('==使用message变量===在此处发送电子邮件); } //这是唯一调用其他函数的函数 var params={}; iam.listGroups(参数、AWSListGroups函数); };
awslistgroups函数(err,data)用作iam.listGroups的回调函数。因此,在此上下文中不能从AwsListGroupsFunction函数返回值。其他回调函数也是如此

您可以通过多种方式解决这个问题,像mapSeries这样的异步库方法将是更好的选择。您可以通过进一步重构来改进它

var aws = require('aws-sdk');
var ses = new aws.SES({region: 'us-east-1'});
var iam = new aws.IAM({apiVersion: '2010-05-08'});
var async = require('async');

exports.handler = function (event, context) {
    console.log("Incoming: ", event);
    var message = "";

    function AwsListGroupsFunction(err, data) 
    {
        if (err) console.log(err, err.stack); // an error occurred
        else
        {
            //Get AWS Groups from AWS Account
            var dataCount = data.Groups.length-1;
            async.mapSeries(data.Groups, function(group, cb) {
              var partialMessage = group.GroupName;
              // Then get all users associated to the GroupName
              var groupParams = { GroupName: group.GroupName};
              iam.getGroup(groupParams, function(err, data) {
                if (err) {
                  console.log(err, err.stack); // an error occurred
                  cb(err, "");
                } 
                else{
                    // successful response
                    partialMessage+= "<br/>";
                    for (var userKey in data.Users) {
                      partialMessage += data.Users[userKey].UserName + ' and PasswordLastUsed: ' + data.Users[userKey].PasswordLastUsed + ' , ';
                    }                      
                    cb(null, partialMessage);
                }
              });
            }, function(err, result) {
                if (err) {
                  //handle error. Expected message is not ready
                }
                else {
                  /*
                    Here result contains array of partial messages; ie [partial message for group1, partial message for group2, ...]
                    concatinate partial messages and send email.
                  */

                }
            });
        }

    };

    function SendEmail(message){
   console.log('===SENDING EMAIL HERE using message variable===');

    }

    // This is the only function called which calls other functions
    var params = {};  
    iam.listGroups(params, AwsListGroupsFunction);
};
var aws=require('aws-sdk');
var ses=新的aws.ses({region:'us-east-1'});
var iam=新的aws.iam({apiVersion:'2010-05-08'});
var async=require('async');
exports.handler=函数(事件、上下文){
日志(“传入:”,事件);
var message=“”;
函数AwsListGroupsFunction(错误,数据)
{
if(err)console.log(err,err.stack);//发生错误
其他的
{
//从AWS帐户获取AWS组
var dataCount=data.Groups.length-1;
async.mapSeries(data.Groups,function(group,cb){
var partialMessage=group.GroupName;
//然后获取与GroupName关联的所有用户
var groupParams={GroupName:group.GroupName};
iam.getGroup(groupParams,函数(err,data){
如果(错误){
console.log(err,err.stack);//发生错误
cb(错误,“”);
} 
否则{
//成功响应
partialMessage+=“
”; for(data.Users中的var userKey){ partialMessage+=data.Users[userKey].UserName+'和PasswordLastUsed:'+data.Users[userKey].PasswordLastUsed+','; } cb(空,部分消息); } }); },函数(错误,结果){ 如果(错误){ //句柄错误。预期消息未准备就绪 } 否则{ /* 这里的结果包含部分消息数组;即[组1的部分消息,组2的部分消息,…] 包含部分消息并发送电子邮件。 */ } }); } }; 功能发送电子邮件(消息){ log('==使用message变量===在此处发送电子邮件); } //这是唯一调用其他函数的函数 var params={}; iam.listGroups(参数、AWSListGroups函数); };
那么你的问题是什么?我把它添加到了不起作用的主要问题中。AwsListGroupsFunction获取组名,如“Group1”、“Group2”,然后AwsGetGroupFunction获取与上述组关联的用户。我需要像下面这样格式化我的消息Group1-User1,User2,User3 Group2-User1,User2,User3,所以我必须等到AwsGetGroupFunction连接完字符串