每天在特定时间向上和向下扩展 AWS ECS Fargate
Scale AWS ECS Fargate up and down on specific time each day
我有一个 ECS Fargate 服务设置,它需要在工作时间(即上午 9 点到下午 5 点)扩展到 2 个额外任务,否则我只需要 1 个任务 运行。
我已经尝试过 Scheduled tasks,但后来我无法使用与“应用程序负载均衡器”一起使用的原始 ECS 服务。
我还使用自定义 CloudWatch 警报尝试了 ECS 服务自动缩放-'Step scaling'。但是我不知道有什么简单的方法可以创建在特定时间触发的警报,因为 ECS 步进扩展不接受 EventBridge 规则。
计划任务将不起作用,因为这些任务不是您服务的一部分。 ECS 计划任务适用于 运行 并自行退出的计划后台任务,不适用于将 运行 无限期运行的服务。
ECS 服务自动缩放是用于此的正确功能。不幸的是,Web 界面落后于服务的实际功能,此时不允许您配置计划的扩展事件。
您目前必须使用 AWS CLI 工具之类的工具通过 API 进行配置。您将需要创建一个 AWS Application Autoscaling Target,它引用您的 ECS 服务的 DesiredCount
设置。然后,您将需要创建多个 AWS Application Autoscaling Scheduled Actions 以更改 cron 计划中的 min/max 容量值。
我在使用 Terraform 之前已经这样做了,所以我知道这是可能的。我强烈建议使用 Terraform 来配置它,以及您的基础设施的其余部分。设置 ECS 计划的自动缩放时,据我所知,配置不会出现在 AWS Web 界面的任何位置。目前 ECS 和应用程序自动缩放 Web 界面似乎完全缺少该功能。
您可以使用预定缩放:
aws application-autoscaling put-scheduled-action --service-namespace ecs \
--scalable-dimension ecs:service:DesiredCount \
--resource-id service/${CLUSTER_NAME}/${SERVICE_NAME} \
--scheduled-action-name ${DESIRED_ACTION_NAME} \
--schedule "cron(cron-expression-to-add-here)" \
--scalable-target-action MinCapacity=${MIN_CAPACITY_NEEDED_AT_DESIRED_TIME},MaxCapacity=${MAX_CAPACITY_NEEDED_AT_DESIRED_TIME}
您可以获得有关 put-scheduled-action
here
的更多信息
我有一个 ECS Fargate 服务设置,它需要在工作时间(即上午 9 点到下午 5 点)扩展到 2 个额外任务,否则我只需要 1 个任务 运行。
我已经尝试过 Scheduled tasks,但后来我无法使用与“应用程序负载均衡器”一起使用的原始 ECS 服务。
我还使用自定义 CloudWatch 警报尝试了 ECS 服务自动缩放-'Step scaling'。但是我不知道有什么简单的方法可以创建在特定时间触发的警报,因为 ECS 步进扩展不接受 EventBridge 规则。
计划任务将不起作用,因为这些任务不是您服务的一部分。 ECS 计划任务适用于 运行 并自行退出的计划后台任务,不适用于将 运行 无限期运行的服务。
ECS 服务自动缩放是用于此的正确功能。不幸的是,Web 界面落后于服务的实际功能,此时不允许您配置计划的扩展事件。
您目前必须使用 AWS CLI 工具之类的工具通过 API 进行配置。您将需要创建一个 AWS Application Autoscaling Target,它引用您的 ECS 服务的 DesiredCount
设置。然后,您将需要创建多个 AWS Application Autoscaling Scheduled Actions 以更改 cron 计划中的 min/max 容量值。
我在使用 Terraform 之前已经这样做了,所以我知道这是可能的。我强烈建议使用 Terraform 来配置它,以及您的基础设施的其余部分。设置 ECS 计划的自动缩放时,据我所知,配置不会出现在 AWS Web 界面的任何位置。目前 ECS 和应用程序自动缩放 Web 界面似乎完全缺少该功能。
您可以使用预定缩放:
aws application-autoscaling put-scheduled-action --service-namespace ecs \
--scalable-dimension ecs:service:DesiredCount \
--resource-id service/${CLUSTER_NAME}/${SERVICE_NAME} \
--scheduled-action-name ${DESIRED_ACTION_NAME} \
--schedule "cron(cron-expression-to-add-here)" \
--scalable-target-action MinCapacity=${MIN_CAPACITY_NEEDED_AT_DESIRED_TIME},MaxCapacity=${MAX_CAPACITY_NEEDED_AT_DESIRED_TIME}
您可以获得有关 put-scheduled-action
here