如何使用SDK设置ecs服务的自动伸缩策略的最小和最大任务?

问题描述 投票:0回答:3

我想利用 AWS 开发工具包为我的 ECS 服务的自动扩展策略设置和定义最小/最大任务。

因此,我能够使用代码成功修改 ECS 容器实例的自动扩展组策略。

UpdateAutoScalingGroupRequest request = new UpdateAutoScalingGroupRequest().withAutoScalingGroupName("helloWorld-ASG").withMinSize(1);

UpdateAutoScalingGroupResult response = client.updateAutoScalingGroup(request);

UpdateScalingPlanResult scalingResponse = scalingClient.updateScalingPlan(scalingRequest);

但是我该如何为我的 ECS 服务的自动扩展策略执行此操作呢? 我需要什么课程才能做到这一点?可以吗?

java amazon-ec2 aws-sdk amazon-ecs autoscaling
3个回答
1
投票

对于 ECS 服务自动扩展,请查看 AWSApplicationAutoScalingClientPutScalingPolicyRequestPutScalingPolicyResult 类,然后根据您的首选扩展策略,您将需要 StepScalingPolicyConfigurationTargetTrackingScalingPolicyConfiguration 类。

请参阅取自 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();

0
投票

上面的答案适用于 SDK 1.x 版本,对于 SDK 2.x 版本,您需要类似这样的内容:

https://sdk.amazonaws.com/java/api/latest/index.html?software/amazon/awssdk/services/applicationautoscaling/ApplicationAutoScalingClient.html


0
投票

我也花了一段时间才找到这个...

您需要 ApplicationAutoScaling:DescribeScalableTargets()/RegisterScalableTarget()。参考:https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-application-autoscaling-2016-02-06.html#describescalabletargetshttps://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 用于注册或更新“可扩展目标”。

© www.soinside.com 2019 - 2024. All rights reserved.