如何使用 AWS 开发工具包以编程方式扩展 ECS 集群

How to programmatically scale up an ECS cluster with the AWS SDK

我正在尝试使用 node.js

通过 aws-sdk 程序包以编程方式扩展我的 ECS 集群

我已经通读了 API 文档 (https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ECS.html) 的 ECS 部分几次,但找不到 API 更新 ECS 集群配置的方法。

如果您进入 ECS > clusters > your cluster > ECS Instances > Scale ECS Instances,您可以在 UI 上执行此操作:

有没有一种方法可以通过现有方法以编程方式执行此操作?是否存在 ECS.updateCluster 方法?

看来,您的集群是使用控制台优先创建的 -运行 体验,这就是您能够看到扩展 ECS 实例选项的原因。

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/scale_cluster.html

如果您的集群是在 2015 年 11 月 24 日之后使用控制台先运行 体验创建的,则可以扩展与为您的集群创建的 AWS CloudFormation 堆栈关联的 Auto Scaling 组向上或向下以添加或删除容器实例。您可以从 Amazon ECS 控制台中执行此扩展操作。

如果您的集群不是在 2015 年 11 月 24 日之后使用控制台优先创建的 -运行 体验,则您无法从 Amazon ECS 控制台扩展集群。但是,您仍然可以在 Auto Scaling 控制台中修改与您的集群关联的现有 Auto Scaling 组。如果您没有与集群关联的 Auto Scaling 组,您可以从现有容器实例创建一个。

我不建议在生产环境中使用控制台创建集群。理想情况下,您应该使用 CF 模板创建可以放置 AutoScaling Group 的集群。

您可以使用以下方法修改 AutoScaling Group 所需的计数 API。

https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/AutoScaling.html#setDesiredCapacity-property

var params = {
  AutoScalingGroupName: "my-auto-scaling-group", 
  DesiredCapacity: 2, 
  HonorCooldown: true
 };
 autoscaling.setDesiredCapacity(params, function(err, data) {
   if (err) console.log(err, err.stack); // an error occurred
   else     console.log(data);           // successful response
 });

没有办法直接通过SDK来完成。您必须使用底层 ASG 来设置所需的计数。与后端一样,ECS 集群设置由 cloudformation 模板完成,该模板为该 EC2 池创建一个 Auto-Scaling 组。

您将能够在 EC2 的 ASG 部分找到与集群关联的自动缩放组。您可以使用 SDK 更新该自动缩放组的所需数量,这将影响 ECS 中的所需数量。

如果您想使用自动缩放功能,那么您可以使用 cloudwatch 警报根据不同的指标(例如 CPU Reservation/Utilization 或 MEMORY Reservation/Utilization.

参考:https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch_alarm_autoscaling.html