我们从CI系统自动创建了fargate服务和任务定义。除了任务定义之外,所有内容都被命名,任务定义只获取生成的ID。我们用我们需要的信息标记它们,但除了要求所有任务定义的列表和循环,描述它们和获取标记之外,找不到通过标记查找任务定义的简单方法。
可以告诉我是否有另一种方式 - 基本上在创建时将某些东西放在任务定义中,我可以稍后说“找到我的任务定义”?
我在这里参加派对的时间已经很晚了,但我认为不可能通过标签引用任务定义(至少在一小时之后不会超过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)
实际上 - 我的一个同事发现了 - 我告诉他发布在这里,但我猜他没有。你这样做:
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'