通过标签定义 ECS 任务

ECS Task definition by tag

我们已从 CI 系统自动创建 Fargate 服务和任务定义。除任务定义外,所有内容均已命名,任务定义仅获取生成的 ID。我们用我们需要的信息标记它们,但找不到通过标记查找任务定义的简单方法,除了询问所有任务定义的列表并循环遍历、描述它们并获取标记。

任何人都可以告诉我是否还有另一种方法 - 基本上是在创建时将某些内容放入任务定义中,我可以稍后说 "find me that task definition"?

我来晚了,但我认为不可能通过标签引用任务定义(至少在翻阅 AWS 文档一小时后不可能)。对于我们的 CD 设置,我们必须 运行 一个脚本来抓取所有活动任务定义并找到具有我们想要的发布标签值的那个。它看起来像这样:

"""
Fetches a task definition based on family name and the `release` tag value.

Usage:
    python3 -m app.scripts.get_task_definition TASK_FAMILY RELEASE_TAG
"""

import sys

import boto3

task_family = sys.argv[1]
release = sys.argv[2]

ecs_client = boto3.client("ecs", region_name="us-west-2")

# Sort by newest first
list_response = ecs_client.list_task_definitions(familyPrefix=task_family, status="ACTIVE", sort="DESC")

for arn in list_response["taskDefinitionArns"]:
    task_definition = ecs_client.describe_task_definition(taskDefinition=arn, include=["TAGS"])
    task_release_tags = [tag for tag in task_definition["tags"] if "release" in tag["key"]]
    task_release = task_release_tags[0].get("value", None) if task_release_tags else None
    if task_release == release:
        print(arn)

实际上 - 我的一位同事想通了 - 我告诉他 post 这里,但我猜他没有。你只需这样做:

aws resourcegroupstaggingapi get-resources --region ${amazon_region} --resource-type-filters ecs:task-definition --tag-filters Key=*******,Values=***** Key=******,Values=******  --max-items 1 | jq --raw-output '.ResourceTagMappingList[].ResourceARN'