如何删除AWS ECS任务定义?

wji*_*271 27 containers amazon-web-services amazon-ecs

在Amazon的EC2容器服务中创建任务定义后,如何删除或删除它?

gbo*_*oda 36

这是一个众所周知的问题.取消注册任务定义后,它将进入INACTIVE状态并使ECS控制台变得混乱.

  • 现在似乎已经解决了,请参阅[fedonev的答案](/sf/answers/5291275811/) (3认同)

fed*_*nev 14

2023 年 2 月:宣布删除 Amazon ECS 任务定义

DeleteTaskDefinitions API解决了已接受答案中指出的问题。与之前一样,取消注册任务定义会将其设置为非活动状态。新的 API 允许您删除INACTIVE任务定义:

aws ecs delete-task-definitions --task-definitions family:revision

aws ecs delete-task-definitions --task-definitions myInactiveTaskDef:1 myInactiveTaskDef:2 myInactiveTaskDef:3
Run Code Online (Sandbox Code Playgroud)


小智 7

Oneline 方法受到Anna A回复的启发:

aws ecs list-task-definitions --region eu-central-1 \
  | jq -M -r '.taskDefinitionArns | .[]' \
  | xargs -I {} aws ecs deregister-task-definition \
        --region eu-central-1 \
        --task-definition {} \
  | jq -r '.taskDefinition.taskDefinitionArn'
Run Code Online (Sandbox Code Playgroud)


Ann*_*ler 5

我最近发现了这个要点(非常感谢创建者的分享!)它将取消注册您特定区域的所有任务定义 - 也许您可以对其进行调整以跳过一些您想要保留的内容:https://gist.github .com/jen20/e1c25426cc0a4a9b53cbb3560a3f02d1

你需要有 jq 来运行它: brew install jq

我“硬编码”了我的区域,对我来说它是eu-central-1,所以一定要根据你的用例进行调整:

#!/usr/bin/env bash
get_task_definition_arns() {
    aws ecs list-task-definitions --region eu-central-1 \
        | jq -M -r '.taskDefinitionArns | .[]'
}

delete_task_definition() {
    local arn=$1

    aws ecs deregister-task-definition \
        --region eu-central-1 \
        --task-definition "${arn}" > /dev/null
}

for arn in $(get_task_definition_arns)
do
    echo "Deregistering ${arn}..."
    delete_task_definition "${arn}"
done
Run Code Online (Sandbox Code Playgroud)

然后当我运行它时,它开始删除它们: Deregistering arn:aws:ecs:REGION:YOUR_ACCOUNT_ID:task-definition/NAME:REVISION...

  • 我认为是因为它没有执行OP要求的操作,即删除或删除任务定义。 (2认同)

小智 5

您可以像以下命令一样取消注册(删除)任务定义: aws ecs deregister-task-definition --task-definition task_defination_name:revision_no

  • 这不会删除任务定义,它只是取消注册任务定义的单个版本。一旦所有版本都被注销(非活动),任务定义本身也将被注销,但它和所有非活动版本仍然存在。看起来 AWS 实际上并没有提供删除任务定义的方法,这令人失望。 (3认同)
  • 如果您有 x 个修订版,则必须为每个修订版运行上述命令。删除所有修订后,任务定义本身也会被删除。 (2认同)