如何使用lambda

时间:2019-11-11 16:54:23

标签: amazon-web-services amazon-ec2 aws-lambda amazon-cloudwatch

我正在尝试提出用于AWS成本优化的解决方案。我可以使用cloudwatch规则和Lambda做到这一点,如果我必须直接停止实例并且该实例没有自动伸缩组,则这种方法可以正常工作。 问题是当我们使用自动缩放组来管理实例时。我能够使用lambda一次放大与一个自动伸缩组关联的唯一实例。我的用例是我必须使用lambda扩展与多个自动扩展组关联的多个实例。

aws提供了一种更新自动缩放配置的方法,如下所示:

var params = {
  AutoScalingGroupName: "my-auto-scaling-group", 
  MaxSize: 3, 
  MinSize: 1
 }
 autoscaling.updateAutoScalingGroup(params, function(err, data) {
   if (err) console.log(err, err.stack); // an error occurred
   else     console.log(data);           // successful response
 })

但是这样一来,我只能一次更新1个自动伸缩组的配置。对于与多个自动伸缩组关联的多个实例,我们有什么方法可以做到?

1 个答案:

答案 0 :(得分:0)

const AWS = require('aws-sdk')
const AUTOSCALING = new AWS.AutoScaling({region : "region-name"})

let asgarr = []    //array for autoscaling group names

const decreasecapacity = (everyparam) =>{
    var params = {
        AutoScalingGroupName: everyparam, 
        MaxSize: 0, 
        MinSize: 0
    };
       AUTOSCALING.updateAutoScalingGroup(params, function(err, data) {
        if (err) console.log(err, err.stack); // an error occurred
        else     console.log(data);           // successful response
    });
}

asgarr.forEach(Element=>decreasecapacity(Element));