我可以暂停 ECS 服务而不是删除它吗?

Posted

技术标签:

【中文标题】我可以暂停 ECS 服务而不是删除它吗?【英文标题】:Can I pause an ECS service instead of deleting it? 【发布时间】:2018-08-29 22:23:06 【问题描述】:

无法在文档中找到此内容。我可以暂停 ECS 服务以停止创建新任务吗?还是我必须删除它才能停止这种行为?

我只是想暂时暂停它在集群上创建新任务

【问题讨论】:

据我回忆,暂停会继续运行后台任务,我不得不深入研究识别、停止/删除实例以脱离其他依赖服务。 【参考方案1】:

将服务的所需任务数设置为 0 就足够了。 ECS 会自动移除所有正在运行的任务。

aws ecs update-service --desired-count 0 --cluster "ecs-my-ClusterName" --service "service-my-ServiceName-117U7OHVC5NJP"

【讨论】:

【参考方案2】:

您可以通过调整服务配置以匹配当前正在运行的任务数量来完成“暂停”。例如,如果您的服务中当前有 3 个正在运行的任务,您将按如下方式配置服务:

这告诉服务:

我要的任务数是[current-count] 我希望你保持至少[current-count] 我不想超过 [current-count

这些组合有效地阻止您的服务进行任何更改。

【讨论】:

啊,是的,这是有道理的。我可以设置为 0 个任务来“关闭”服务。自己没有得出这个结论而感到愚蠢 别难过,众所周知,AWS 在他们的大部分 UI 中都是模棱两可的【参考方案3】:

接受的答案不正确。 如果您将“最小健康百分比”和“最大健康百分比”都设置为 100,AWS 会给您一个类似以下的错误:

要停止服务创建新任务,您必须通过更新任务定义并将所需任务数量设置为 0 来更新服务。之后,您可以使用 AWS CLI(最快选项)停止现有正在运行的任务,例如:

aws ecs list-services --cluster "ecs-my-ClusterName"
aws ecs list-tasks --cluster "ecs-my-ClusterName" --service "service-my-ServiceName-117U7OHVC5NJP"

之后你会得到该服务正在运行的任务列表,例如:

 
    "taskArns": [
        "arn:aws:ecs:us-east-1:XXXXXXXXXXX:task/12e13d93-1e75-4088-a7ab-08546d69dc2c",
        "arn:aws:ecs:us-east-1:XXXXXXXXXXX:task/35ed484a-cc8f-4b5f-8400-71e40a185806"
    ]

最后使用下面来停止每个任务:

aws ecs stop-task --cluster "ecs-my-ClusterName" --task 12e13d93-1e75-4088-a7ab-08546d69dc2c
aws ecs stop-task --cluster "ecs-my-ClusterName" --task 35ed484a-cc8f-4b5f-8400-71e40a185806

更新: 通过将所需的运行任务数设置为 0,ECS 将停止并耗尽该服务中所有正在运行的任务。之后无需使用上面最初发布的 CLI 命令单独停止它们。

【讨论】:

谢谢,自从我发布原始答案以来,他们似乎更新了允许的内容。 更新:将所需的运行任务数设置为 0,将停止该服务中所有正在运行的任务。之后无需单独阻止它们。

以上是关于我可以暂停 ECS 服务而不是删除它吗?的主要内容,如果未能解决你的问题,请参考以下文章

应用程序暂停时是不是可以连接到服务器?

如何从 ECS 服务中删除/移除任务

阿里云 ECS 上的 Realm 对象服务器

阿里云ECS操作演示

ECS共享型n4服务器是不是可以安装宝塔面板吗?

ECS