我在 docker 中有一个小任务(10 分钟),我想每天早上运行它。
我希望从 AWS 实现以下目标:
1. 启动 EC2 实例。2
. 运行我的 docker 任务。3
. 关闭 EC2 实例。
我目前尝试过的:
- 创建了一个 ECS 任务。
- 创建一个有 1 台机器的 ECS 集群来运行该任务。
我可以手动运行任务,而且它有效。ECS 还允许您安排任务,这很完美。
唯一的问题是 EC2 实例仍在一直运行。
我可以手动将其缩减为 0 个实例,但我正在寻找一种方法来自动缩减它,然后将其扩大到运行任务。
实现该目标的最好/最简单的方法是什么?
干杯,
Leonti
答案1
您可以在 AutoScale 组中添加计划操作。
http://docs.aws.amazon.com/autoscaling/latest/userguide/schedule_time.html
因此,这将允许您按计划创建和销毁 EC2 实例。只需确保您将 AMI 配置为加入正确的 ECS 集群,并在计划的 ECS 任务启动之前留出一些重叠时间,以便实例启动并加入集群。
希望这可以帮助。
答案2
这是 2017 年再次出现的一个问题。
截至 2022 年,这里最好的选择是使用 Fargate 而不是 EC2 来配置容器。ECS 将在 Fargate 上启动所需的容器,并根据需要使用它,然后在任务停止后取消配置。
答案3
如果您不知道您的任务需要多长时间,您可以为您的 Docker 容器提供 AWS 凭证,然后在任务脚本末尾从容器内将所需的实例数设置为 0:
aws autoscaling set-desired-capacity --auto-scaling-group-name YOUR_GROUP_NAME --desired-capacity 0