我如何定位 ECS 任务的子集来停止操作?

问题描述 投票:0回答:1

在我的架构中,单个“工作”可能需要 N 个“任务”。 用户可以开始一项作业,允许开始许多任务,然后一起取消该作业。 发生这种情况时,我需要停止该工作的所有任务。

我无法确定“分组”我的任务的最佳方式,以便我可以通过 JobId 引用它们。

我注意到任务定义有一个“组”属性,但我找不到一种简单的方法来对类似组的任务执行批量操作,正如我所期望的那样。

我正在寻找与 kubectl 命令等效的命令:

kubectl delete job -l jobId=123

kubectl delete pod -l jobId=123

我想也许任务集可能就是我正在寻找的东西,但是我对它们了解得越多,我对它们是什么就越感到困惑。

我希望有类似的事情

aws ecs delete-task --group jobId=123
amazon-web-services task amazon-ecs aws-cli group
1个回答
0
投票

不幸的是,没有简单的方法可以通过这样的单个命令删除特定的 ECS 任务。如果您查看

aws ecs stop-task
命令(没有
delete-task
命令),您会发现必须指定任务 ID,没有其他选项可以传递来选择要停止的任务。

运行任务时,您可以使用作业 ID 将 AWS 标签添加到任务中:

aws ecs run-task --tags jobId=123`

然后,您必须调用 aws resourcegroupstaggingapi get-resources 来获取具有特定作业 ID 标签的所有任务。这将返回完整的任务 ARN。然后,您应该能够将这些任务 ARN 作为任务 ID 传递给

aws ecs stop-task


或者,您可以考虑向您的应用程序添加一些任务跟踪逻辑,这样您就不必依赖 AWS API 为您的任务公开的内容。您可以捕获在

run task
响应中返回的任务 ID,并将它们与 JobID 一起放置在 DymamoDB 表之类的位置。然后,当作业被取消时,只需在数据库中查询与该作业对应的任务 ID,然后使用这些 ID 调用
stop-task
即可。

© www.soinside.com 2019 - 2024. All rights reserved.