Amazon ECS – 如何重新启动服务的所有任务?

我们有一个任务从外部数据源加载一些configuration文件。 设置上传后,我们希望能够重新启动服务中的所有任务,以便设置传播到所有实例。

什么是重新启动所有服务的最佳方式?

我们有一个“解决方法”,其中包括将“任务数量”设置为0,然后进行备份,但这绝对不是应该如何完成的,并且已经停机。

你想做的事情基本上就像重新部署服务一样。

要在不停机的情况下重新部署服务:

  1. 根据当前的任务定义注册一个新的任务定义(具有相同的细节)
  2. 调用UpdateService,将现有的Service与新的Task Definition关联起来。

这应该为新的任务定义启动新的任务,然后终止旧的任务定义的旧任务,有效地重新启动任务,而无需停机。

请参阅: UpdateService

作为ECS构build块的任务可以通过StopTask调用来停止。 服务由相同的API调用停止的基本任务组成。 这里只有缺less的部分是针对具有定义的家族参数的ListTasks调用的结果。 我写了简单的Lambda函数 ,可以帮助你。

根据亚马逊文档,您应该能够使用UpdateService API调用来编写有问题的操作。 在上一个链接中有一些代码示例,你应该可以适应。 在更新任务configuration之后,似乎编写一个脚本负责使用适当的任务定义重新加载服务,这将是解决问题的最佳解决scheme。

有更多关于使用AWS CLI和ECS的文档,这似乎是处理批量脚本重新启动服务的最简单方法。

很好的https://github.com/fdfk/ecsServiceRestart

python ecsServiceRestart.py restart --services="app app2" --cluster=test