下面是一个示例,展示了如何使用标签来定义ECS任务:
{
"family": "my-task-definition",
"networkMode": "awsvpc",
"executionRoleArn": "ecsTaskExecutionRole",
"containerDefinitions": [
{
"name": "my-container",
"image": "my-container-image",
"cpu": 256,
"memoryReservation": 512,
"portMappings": [
{
"containerPort": 80,
"protocol": "tcp"
}
],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "my-log-group",
"awslogs-region": "us-east-1",
"awslogs-stream-prefix": "my-container"
}
},
"dockerLabels": {
"environment": "production",
"service": "my-service"
}
}
]
}
在上述示例中,我们在 containerDefinitions 中使用了 dockerLabels 来定义标签。这里我们定义了两个标签,分别是 environment 和 service。
在使用 ECS API 或 AWS CLI 查询 ECS 任务时,可以使用标签来筛选任务。
使用 AWS CLI:
aws ecs list-tasks --cluster my-cluster --query 'taskArns[?contains(tags.environment, `production`)]'
使用 ECS API:
import boto3
client = boto3.client('ecs')
response = client.list_tasks(
cluster='my-cluster',
startedBy='my-service',
desiredStatus='RUNNING',
tags=[
{
'key': 'environment',
'value': 'production'
}
]
)
task_arns = response['taskArns']
在上述示例中,我们使用了 tags 参数来匹配标签。在这里,我们使用了 environment:production 来筛选任务。
需要注意的是,ECS 任务的标签是在 Task Definition 中定义的,而不是在运行时。因此,如果你需要为不同的任务指定不同的标签,你需要创建多个 Task Definitions,并在创建任务时选择相应的 Task Definition。
上一篇:按标签从MSMQ中读取消息
下一篇:按标签对Pandas中的分组求和