Node.js 使用节点从AWS数据获取消息字符串的回调帮助
我在aws sdk中使用Node.Js来填充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
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连接完字符串