【发布时间】:2016-02-07 14:21:54
【问题描述】:
尝试创建一个列出标记的 ec2 和标记的 rds 的 lambda 函数,然后执行一个操作。这是我第一次使用 javascript,希望能得到一些帮助。
请看下面我的例子
var aws = require('aws-sdk');
var ec2 = new aws.EC2();
var rds = new aws.RDS();
aws.config.region = 'us-east-1';
exports.handler = function(event,context) {
if (event) {
console.log(event.id);
}
//setup params for rds call
var rdsparams = {
DBInstanceIdentifier: 'master',
};
//setup params for ec2 call
var ec2params = {
Filters: [
{
Name: 'tag:role',
Values: [
'app'
],
}
]
};
//Get ec2 instances with app tag, may need to add a condition on running so pulled it into hash
ec2.describeInstances(ec2params, function(err, appdata) {
if (err) {
console.log(err);
return;
}
else {
var apparray={};
for(var i = 0; i < appdata.Reservations.length; i++) {
var ins = appdata.Reservations[i].Instances[0];
var id = ins.InstanceId;
var state = ins.State.Name;
apparray[id]=state;
}
console.log(apparray);
context.succeed(apparray);
}
});
rds.describeDBInstances(rdsparams, function(err, data) {
if (err) {
console.log(err, err.stack);
return;
}
else {
var rdsarray={};
var rdsarray=(data);
console.log(rdsarray);
var ins=rdsarray[0];
var name = ins.ReadReplicaDBInstanceIdentifiers[0];
rdsarray[replicant]=name;
}
context.succeed(rdsarray);
});
//context.done();
};
我想从我的函数中返回过滤后的 (apparray) 和 (rdsarray),并在脚本主体中对此进行计算。关于如何做到这一点的任何想法。
类似
例如 var replicas = rdsarray.length
提前致谢
【问题讨论】:
-
嗨,我想你可以重构一下,因为
describeInstances和describeDBInstances是异步函数,每个函数都调用context.succeed
标签: javascript node.js amazon-web-services lambda