ECS任务定义(按标签)

时间:2019-03-23 01:50:23

标签: amazon-web-services amazon-ecs aws-fargate

我们已经从CI系统中自动创建了Fargate服务和任务定义。除了任务定义外,其他所有东西都被命名,而任务定义只是获得一个生成的ID。我们用所需的信息对它们进行标记,但是除了索要所有任务定义的列表并进行遍历,描述它们并获取标签之外,找不到通过标记查找任务定义的简便方法。

可以告诉我是否还有另一种方法-基本上在创建时在任务定义中添加一些内容,以后我可以说“找到我 任务定义”?

2 个答案:

答案 0 :(得分:0)

我在这里参加聚会已经很晚了,但是我认为不可能通过标签来引用任务定义(至少在经过一个小时的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)

答案 1 :(得分:0)

实际上-我的一位同事知道了-我告诉他在这里发帖,但我想他没有。您只需这样做:

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'