我想利用 AWS 开发工具包为我的 ECS 服务的自动扩展策略设置和定义最小/最大任务。
因此,我能够使用代码成功修改 ECS 容器实例的自动扩展组策略。
UpdateAutoScalingGroupRequest request = new UpdateAutoScalingGroupRequest().withAutoScalingGroupName("helloWorld-ASG").withMinSize(1);
UpdateAutoScalingGroupResult response = client.updateAutoScalingGroup(request);
UpdateScalingPlanResult scalingResponse = scalingClient.updateScalingPlan(scalingRequest);
但是我该如何为我的 ECS 服务的自动扩展策略执行此操作呢? 我需要什么课程才能做到这一点?可以吗?
对于 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();
上面的答案适用于 SDK 1.x 版本,对于 SDK 2.x 版本,您需要类似这样的内容:
我也花了一段时间才找到这个...
您需要 ApplicationAutoScaling:DescribeScalableTargets()/RegisterScalableTarget()。参考:https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-application-autoscaling-2016-02-06.html#describescalabletargets和https://docs.aws .amazon.com/aws-sdk-php/v3/api/api-application-autoscaling-2016-02-06.html#registerscalabletarget。它有一个 MinCapacity/MaxCapacity。使用 ServiceNamespace:ecs 进行调用。
下面的代码(采用 PHP 语法)显示了当前值。使用 RegisterScalableTarget 进行更改。
$aasClient = new \Aws\ApplicationAutoScaling\ApplicationAutoScalingClient([
'profile' => 'default',
'region' => 'eu-west-2',
'version' => '2016-02-06'
]);
$aResult = $aasClient->DescribeScalingPolicies(array(
'ServiceNamespace' => 'ecs'
));
然后,DescribeScalingPolicies() 将向您显示与可扩展目标交互的策略。这一切都是在容量提供程序的上下文中完成的,容量提供程序也有最小/最大,但这是集群中的最小/最大实例。这将返回 MinCapacity/MaxCapacity。有一个相应的 RegisterScalableTarget 用于注册或更新“可扩展目标”。