我想知道是否可以通过任何方式更新此字段“ 最小任务数”(无论语言如何,如果在lambda中可用)
为什么?因为我链接到该服务的平衡器出现问题。
从NodeJS SDK中,我可以更改所需的任务字段,这很好,但是 Cloudwatch中的警报使创建的任务停止了。
我看到的是我必须更新两者,以免它们停下来。
如何在ecs上的群集服务中编辑此字段?
答案 0 :(得分:1)
检查ApplicationAutoScaling类。我对这个特定的SDK不熟悉,但是应用程序自动缩放是在boto3和awscli中定义最小和最大任务的地方。
答案 1 :(得分:1)
从此link获取参考,您必须使用application auto-scaling boto3 client分两步来完成:
register_scalable_target()
(例如MinCapacity=3
和MaxCapacity=100
)将ECS服务创建为应用程序自动扩展目标。该调用将返回可扩展的目标ARN。register_scalable_target()
,每个工作日早晨都以MinCapacity=3
致电。请参阅register_scalable_target()文档,其中明确指出:
注册可扩展目标后,可以使用此目标 用于更新其可伸缩性的最小值和最大值的操作 尺寸。
您的自动缩放策略将在Min / MaxCapacity边界内设置DesiredCapacity,在此范围内,MinCapacity在工作时间内将从0变为3,在下班后变为0。
答案 2 :(得分:0)
您可以使用部署配置来完成。我在下面提到了aws-cli和boto3示例。
aws-cli
aws ecs update-service --service my-http-service --deployment-configuration maximumPercent=10,minimumHealthyPercent=5 [1]
参考:https://docs.aws.amazon.com/cli/latest/reference/ecs/update-service.html [1]
boto3
response = client.update_service(
cluster='string',
service='string',
desiredCount=123,
taskDefinition='string',
deploymentConfiguration={
'maximumPercent': 123,
'minimumHealthyPercent': 123
},
networkConfiguration={
'awsvpcConfiguration': {
'subnets': [
'string',
],
'securityGroups': [
'string',
],
'assignPublicIp': 'ENABLED'|'DISABLED'
}
},
platformVersion='string',
forceNewDeployment=True|False,
healthCheckGracePeriodSeconds=123
)
答案 3 :(得分:0)
要更新可扩展目标,请指定要更改的参数。包括标识可扩展目标的参数:资源ID,可扩展维度和名称空间。此更新请求不会更改您未指定的任何参数。
此golang示例显示了如何更新ECS服务的最小任务数(最小容量):
import (
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/applicationautoscaling"
)
sess, _ := session.NewSession()
aas := applicationautoscaling.New(sess)
res, err := aas.RegisterScalableTarget(
&applicationautoscaling.RegisterScalableTargetInput{
MinCapacity: aws.Int64(int64(5)),
ServiceNamespace: aws.String("ecs"),
ResourceId: aws.String("service/cluster_name/service_name"),
ScalableDimension: aws.String("ecs:service:DesiredCount"),
},
)