我们有一个任务从外部数据源加载一些configuration文件。 设置上传后,我们希望能够重新启动服务中的所有任务,以便设置传播到所有实例。
什么是重新启动所有服务的最佳方式?
我们有一个“解决方法”,其中包括将“任务数量”设置为0,然后进行备份,但这绝对不是应该如何完成的,并且已经停机。
你想做的事情基本上就像重新部署服务一样。
要在不停机的情况下重新部署服务:
这应该为新的任务定义启动新的任务,然后终止旧的任务定义的旧任务,有效地重新启动任务,而无需停机。
请参阅: 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