ECS任务按标签定义

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

我们从CI系统自动创建了fargate服务和任务定义。除了任务定义之外,所有内容都被命名,任务定义只获取生成的ID。我们用我们需要的信息标记它们,但除了要求所有任务定义的列表和循环,描述它们和获取标记之外,找不到通过标记查找任务定义的简单方法。

可以告诉我是否有另一种方式 - 基本上在创建时将某些东西放在任务定义中,我可以稍后说“找到我的任务定义”?

amazon-web-services amazon-ecs aws-fargate
2个回答
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)

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'
© www.soinside.com 2019 - 2024. All rights reserved.