如何在AWS ECS上定期运行Docker镜像?

6
我该如何使用ECS定期(每小时)运行Docker镜像,而无需使用持续运行的EC2实例+ cron? 我有一个包含第三方二进制文件和Python项目的Docker镜像。
后一种方法从长远来看并不可行,因为实例每天24/7运行成本很高,而脚本只会持续约3分钟。

自动化Docker登录过程 - BugHunter
1
aws ecr get-login --no-include-email >> 执行响应以登录到Docker。 - BugHunter
1
@INVOKECloud,我希望在我的帖子开头提出了更简明易懂的问题(并将背景信息放在其下方)。 - Sean Pianka
@BugHunter,你给我的这个命令是必要的,以便能够将构建好的镜像推送到ECR存储库,所以我不确定你打算让我在哪里使用它。我上面发布的错误是在ECS仪表板上先前运行的集群中的任务详细信息下显示的。 - Sean Pianka
@BugHunter 我没有使用docker-compose,我知道你说的过期的Docker令牌(这就是为什么我提到我之前使用过你发布的命令),但我不认为这是问题,因为我能够将构建好的镜像正确地推送到现有的ECR存储库。 - Sean Pianka
显示剩余2条评论
2个回答

5
对于AWS ECS集群,建议至少有1个EC2服务器每天7x24小时运行。您是否考虑过AWS Fargate是否可以运行您的Docker容器?还有AWS Batch?如果Fargate和AWS Batch不可行,则针对您的要求,我建议使用以下方法而不使用ECS。
  1. 使用预先构建的docker和所需软件和库构建EC2 AMI。
  2. 使用AWS Instance Scheduler每小时启动一个EC2服务器,并在用户数据的一部分中启动您提到的镜像中的docker容器。https://aws.amazon.com/answers/infrastructure-management/instance-scheduler/
  3. 如果您知道您的任务执行时间可能为5分钟。在8或10分钟后,使用调度程序关闭服务器。
上述方法将盲目启动EC2并在不知道您的Python工作是否成功完成的情况下停止它。我们仍然可以通过Lambda和CloudFormation模板组合来改进以上方法。请让我知道您的想法 :)

1
现在可以在FarGate中安排任务,请参见https://dev59.com/4Kvka4cB1Zd3GeqPrE9x#54908548 - Ing. Luca Stucchi

1

你能够根据问题中所指定的要求完成任务吗?据我理解,他需要有一个特定的停机时间以实现成本降低。这与 AWS RDS 实例调度器基本相似,我们根据工作时间设置停机时间。我刚刚尝试了你的答案,它基本上就像在给定的时间间隔内运行 cron 命令。 - Kasun Piyasena

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接