Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
如何排查 Amazon ECS 任务的标记问题?
我想排查 Amazon Elastic Container Service (Amazon ECS) 任务标签的问题。
解决方案
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
使用 Amazon ECS 设置任务标签时,可能会遇到以下问题:
- 标签不会从服务或任务定义传播到任务。
- 标签的 ARN 和资源 ID 格式已过时。
- 由于缺少 AWS Identity and Access Management (IAM) 权限或标签限制,无法创建新 Amazon ECS 资源或向资源添加标签。
- 在 AWS 账单与成本管理控制台的 Billing(账单)页面上看不到 Amazon ECS 标签。
使用 PropagateTags 参数从服务或任务定义传播到任务
默认情况下未激活 PropagateTags 参数。要将标签从任务定义或服务复制到任务,请激活 PropagateTags。可以在运行任务、创建服务或更新服务时复制标签。
**注意:**在以下命令中,将 servicename 替换为您的服务名称,将 clustername 替换为您的集群名称,将 region 替换为您的 AWS 区域。还要将 taskdefinitionname 替换为您的任务定义名称,将 taskdefinitionversion 替换为您的任务定义版本。
要检查在特定服务中是否已激活 PropagateTags,请运行以下 describe-services 命令:
aws ecs describe-services --services servicename --cluster clustername --region region --query 'services[*].propagateTags' --output text
要为新独立任务激活标签传播,请运行以下 run-task 命令:
aws ecs run-task --cluster clustername --task-definition taskdefinitionname:taskdefinitionversion --launch-type FARGATE/EC2 --propagate-tags TASK_DEFINITION/SERVICE
要为新服务激活标签传播,请运行以下 create-service 命令:
aws ecs create-service --cluster clustername --service-name servicename --task-definition taskdefinitionname:taskdefinitionversion --desired-count 2 --launch-type FARGATE --platform-version LATEST --network-configuration "awsvpcConfiguration={subnets=[subnet-abcdef123],securityGroups=[sg-pqrst5678]}" --propagateTags TASK_DEFINITION/SERVICE
要为现有服务激活标签传播,请运行以下 update-service 命令:
aws ecs update-service --cluster clustername --service servicename --propagate-tags SERVICE/TASK_DEFINITION --force-new-deployment
还可以使用 Amazon ECS 控制台来开启标签传播。
完成以下步骤:
- 打开 Amazon ECS 控制台。
- 为您的 Amazon ECS 资源选择 Region(区域)。
- 在导航窗格中,选择 Task definitions(任务定义)。
- 从资源列表中选择任务定义,然后选择 Actions(操作)。
- 选择 Create service(创建服务)或 Run task(运行任务)。
- 在 Task tagging configuration(任务标记配置)中,选择 Service(服务)或 Task definitions(任务定义)。
**注意:**默认选项为 Do not propagate(不传播)。
要使用 AWS CloudFormation 在 Amazon ECS 中配置标签,必须声明 AWS::ECS::Service 资源。要声明 AWS::ECS::Service,请使用 EnableECSManagedTags 和 PropagateTags 属性,其值为 SERVICE 或 TASK_DEFINITION。
注意:
- 要在 CloudFormation 中创建堆栈后使用与 Amazon ECS 属性相关的服务标签,必须更新堆栈和资源替换。有关更多信息,请参阅了解堆栈资源的更新行为。
- 可以访问与直接从 Amazon ECS RunTask API 启动任务相同的计划任务配置。
使用正确的 ARN 格式
要标记 Amazon ECS 资源,必须使用新 ARN 和 ID 格式。要将 Amazon ECS 部署迁移到新格式,请参阅 Migrating your Amazon ECS deployment to the new ARN and resource ID format。
**注意:**只有在重新创建资源后,现有资源才会收到新 ARN 格式。
验证 IAM 实体是否具有所需的权限并检查标签限制
所有 AWS 账户都使用标记授权。要在创建 Amazon ECS 资源时对其进行标记,IAM 主体必须拥有 ecs:TagResource 权限。以下 Amazon ECS API 也必须拥有此权限:
- CreateCapacityProvider
- CreateCluster
- CreateService
- CreateTaskSet
- RegisterContainerInstance
- RegisterTaskDefinition
- RunTask
- StartTask
如果您无法向 Amazon ECS 服务添加标签或创建资源,请完成以下步骤来排查此问题:
- 查看 AWS CloudTrail 事件中是否有 TagResource 事件。
- 查看事件中是否出现以下错误消息:
"AccessDenied" (访问被拒绝) -或-
"The tags cannot be updated at this time.Wait a few minutes and try again" (此时无法更新标签,请稍等几分钟后再试一次) 如果收到上述错误,则说明该 IAM 实体没有 ecs:TagResource 权限。 - 使用 IAM 控制台或 AWS CLI 向 IAM 实体添加 ecs:TagResource 权限。
- 重新创建资源,或再次向 Amazon ECS 集群添加标签。
- 确认您的 Amazon ECS 标签遵循标签限制。
检查您是否遇到账单和成本管理问题
如果您无法按标签筛选 Amazon ECS 任务以查看成本,请确认 Amazon ECS 任务有所需的标签。运行以下 list-tags-for-resource 命令:
aws ecs list-tags-for-resource --resource-arn value
**注意:**将 value 替换为您的任务 ARN。
要使用 Amazon ECS 控制台来检查 Amazon ECS 任务的标签,请完成以下步骤:
- 打开 Amazon ECS 控制台。
- 为您的 Amazon ECS 资源选择 Region(区域)。
- 在导航窗格中,选择资源类型,例如 Clusters(集群)。
- 选择您的资源,然后选择 Tags(标签)以查看该资源拥有的所有标签。
要检查托管标签,必须激活 Amazon ECS 托管标签。要检查是否已激活 Amazon ECS 托管标签,请运行以下 describe-services 命令:
aws ecs describe-services --services servicename --cluster clustername --region region --query 'services[*].enableECSManagedTags' --output text
**注意:**将 servicename 替换为您的服务名称,将 clustername 替换为您的集群名称,将 region 替换为您的区域。
在命令的输出中,检查 enableECSManagedTags 是否设置为 true。
要使用控制台来激活 Amazon ECS 托管标签,请完成以下步骤:
- 打开 Amazon ECS 控制台。
- 为您的 Amazon ECS 资源选择 Region(区域)。
- 在导航窗格中,选择 Task definitions(任务定义)。
- 从资源列表中选择任务定义,然后选择 Actions(操作)。
- 选择 Create service(创建服务)或 Run task(运行任务)。
- 在 Task tagging configuration(任务标记配置)中,选择 Enable ECS managed tags(启用 ECS 托管标签)。
要使用 AWS CLI 激活 Amazon ECS 托管标签,请运行 update-service 命令:
aws ecs update-service --cluster clustername --service servicename --enable-ecs-managed-tags --force-new-deployment
**注意:**将 clustername 替换为您的集群名称,将 servicename 替换为您的服务名称。
可能会列出您用于计费的标签,但在 AWS Cost Explorer 成本管理服务中不会出现这些标签。要解决此问题,请在账单和成本管理控制台中激活成本分配标签。
**注意:**激活标签最多可能需要 24 小时。
相关信息
