【问题标题】:How do you delete an AWS ECS Task Definition?如何删除 AWS ECS 任务定义?
【发布时间】:2016-05-04 20:54:14
【问题描述】:

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

【问题讨论】:

    标签: amazon-web-services containers amazon-ecs


    【解决方案1】:

    在 AWS 控制台上没有删除任务定义的选项。

    但是,您可以通过执行以下命令取消注册(删除)您拥有的修订号:

    aws ecs deregister-task-definition --task-definitiontask_defination_name:revision_no

    编辑:在 cmets 之后编辑,以便更多理解

    【讨论】:

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

    这是known issue。一旦您取消注册一个任务定义,它就会进入 INACTIVE 状态并让 ECS 控制台变得混乱。

    如果你想投票支持它被修复,有一个issue on Github。只需竖起大拇指,它就会提高请求的优先级。

    【讨论】:

      【解决方案3】:

      创建了以下要点,以使用 JS CLI 安全地审查、过滤和取消注册 AWS 任务定义和修订(一次最多 100 个)。

      https://gist.github.com/shivam-nagar/aa79b02b74f616f8714d51e419bd10de

      可以使用它来取消注册任务定义的所有修订。这将导致任务定义本身被标记为非活动状态。

      【讨论】:

        【解决方案4】:

        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'
        

        【讨论】:

          【解决方案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
          

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

          【讨论】:

          • 我不知道为什么这被否决了,它对我有用。好的,不活跃的定义仍然存在,但至少有些东西被注销了..
          • 我认为是因为它没有执行 OP 要求的操作,即删除或删除任务定义。
          • 这对我帮助很大,谢谢!
          猜你喜欢
          • 2017-03-04
          • 1970-01-01
          • 1970-01-01
          • 2019-12-15
          • 1970-01-01
          • 2020-08-19
          • 2023-01-18
          • 2019-12-14
          • 1970-01-01
          相关资源
          最近更新 更多