aws lambda函数如何使用响应来执行计算

aws lambda function how to use responses to perform calculation

本文关键字:执行 计算 响应 何使用 lambda 函数 aws      更新时间:2023-09-26

尝试创建一个lambda函数,该函数列出标记的ec2和标记的rds,然后执行操作。这是我第一次使用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();
};

我想从函数中返回已过滤的(apparay)和(rdsarray),并在脚本主体中对此进行计算。关于如何做到这一点的任何想法。

类似的东西

var replicas=rdsarray.length,例如

提前感谢

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)
      return context.done(err, null);
    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);
    var resultData = {};
    resultData.apparray = apparray;
    rds.describeDBInstances(rdsparams, function(err, data) {
      if (err)
        return context.done(err, null);
      var rdsarray = {};
      var rdsarray = (data);
      console.log(rdsarray);
      var ins = rdsarray[0];
      var name = ins.ReadReplicaDBInstanceIdentifiers[0];
      rdsarray[replicant] = name;
      resultData.rdsarray = rdsarray;
      context.done(null, resultData);
    });
  });
};

然后在代码中调用lambda函数

var lambda = new sdk.Lambda();
var params = {
  FunctionName: 'arn:aws:lambda:us-west-2:1541546477777:function:MyFunction',
  Payload: JSON.stringify(/*your params here*/)
};
lambda.invoke(params, function(err, data) {
  if (err) {
    console.log('error ===', err);
    return ;
  }
  var lambdaData = JSON.parse(data.Payload);
  // do your stuff here
});

这是你需要的吗?它可能坏了,但我希望你知道它的想法