如何使用 SDK 为 ecs 服务的弹性伸缩策略设置最小和最大任务?
Posted
技术标签:
【中文标题】如何使用 SDK 为 ecs 服务的弹性伸缩策略设置最小和最大任务?【英文标题】:How do I set min and max tasks for auto scaling policy for ecs services using the SDK? 【发布时间】:2020-02-07 07:15:08 【问题描述】:我想利用 AWS 开发工具包为我的 ECS 服务的 Auto Scaling 策略设置和定义最小/最大任务。
因此,我能够使用代码成功修改我的 ECS 容器实例的 Auto Scaling 组策略。
UpdateAutoScalingGroupRequest request = new UpdateAutoScalingGroupRequest().withAutoScalingGroupName("helloWorld-ASG").withMinSize(1);
UpdateAutoScalingGroupResult response = client.updateAutoScalingGroup(request);
UpdateScalingPlanResult scalingResponse = scalingClient.updateScalingPlan(scalingRequest);
但是如何为我的 ECS 服务的 Auto Scaling 策略执行此操作? 我需要什么课程才能做到这一点?有可能吗?
【问题讨论】:
【参考方案1】:对于 ECS 服务自动扩展,请查看 AWSApplicationAutoScalingClient、PutScalingPolicyRequest 和 PutScalingPolicyResult 类,然后根据您的首选扩展策略,您将需要 StepScalingPolicyConfiguration 或 TargetTrackingScalingPolicyConfiguration 类。
请参阅 AWS Java SDK 文档中的以下示例:
AWSApplicationAutoScaling client = AWSApplicationAutoScalingClientBuilder.standard().build();
PutScalingPolicyRequest request = new PutScalingPolicyRequest()
.withPolicyName("web-app-cpu-gt-75")
.withServiceNamespace("ecs")
.withResourceId("service/default/web-app")
.withScalableDimension("ecs:service:DesiredCount")
.withPolicyType("StepScaling")
.withStepScalingPolicyConfiguration(
new StepScalingPolicyConfiguration().withAdjustmentType("PercentChangeInCapacity")
.withStepAdjustments(new StepAdjustment().withMetricIntervalLowerBound(0d).withScalingAdjustment(200)).withCooldown(60));
PutScalingPolicyResult response = client.putScalingPolicy(request);AWSApplicationAutoScaling client = AWSApplicationAutoScalingClientBuilder.standard().build();
【讨论】:
我明白了。我正在查看文档,但在最小/最大任务中找不到任何内容。我可以使用 UpdateServiceRequest 设置desiredCount,但不能设置 min/max 任务。 我认为问题在于我处于蓝/绿部署中,我很难在文档中找到为此设置最小/最大任务的位置。我查看了 DeploymentConfiguration,但似乎 withMinimumHealthyPercent() 函数仅用于滚动更新。目前正在研究 CodeDeploy,因为那是使用 B/G 的地方,但到目前为止还没有运气。以上是关于如何使用 SDK 为 ecs 服务的弹性伸缩策略设置最小和最大任务?的主要内容,如果未能解决你的问题,请参考以下文章