我们已经从CI系统中自动创建了Fargate服务和任务定义。除了任务定义外,其他所有东西都被命名,而任务定义只是获得一个生成的ID。我们用所需的信息对它们进行标记,但是除了索要所有任务定义的列表并进行遍历,描述它们并获取标签之外,找不到通过标记查找任务定义的简便方法。
可以告诉我是否还有另一种方法-基本上在创建时在任务定义中添加一些内容,以后我可以说“找到我 任务定义”?
答案 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'