如何标记 Amazon ECS 资源以跟踪成本和合规性?
我想标记我的 Amazon Elastic Container Service (Amazon ECS) 资源以跟踪成本和合规性。
简短描述
解决方法
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
激活账户级别的资源标记授权
要在创建集群或服务时使用和创建标签,您必须拥有 ecs:TagResource 权限。您还必须拥有创建资源所需操作的权限,例如 ecsCreateCluster。
要查看 AWS 账户级别的当前标记授权状态,请运行以下 AWS CLI 命令 list-account-settings:
aws ecs list-account-settings --effective-settings
在命令输出中,检查是否激活了标记授权。如果未激活标记授权,请运行以下 put-account-setting-default 命令进行激活:
aws ecs put-account-setting-default --name tagResourceAuthorization --value on --region regionname
**注意:**请将 regionname 替换为您的 AWS 区域。
使用正确的 ARN 格式
要标记 Amazon ECS 资源,必须使用新的 ARN 和 ID 格式。您可能需要将您的 Amazon ECS 部署迁移到新的 ARN 和资源 ID 格式。
验证 IAM 实体是否具有所需的权限并检查标签限制
如果您无法向 Amazon ECS 服务添加标签,请确保您的 AWS Identity and Access Management (IAM) 实体具有所需的权限。有关信息,请参阅如何排查 Amazon ECS 任务的标记问题?中的“验证 IAM 实体是否具有所需的权限并检查标签限制”部分
使用 Amazon ECS 托管标签进行计费
激活 enableECSManagedTags 参数
当您使用 Amazon ECS 托管标签时,Amazon ECS 会自动使用集群信息和任务定义或服务标签标记所有新启动的任务。Amazon ECS 还会标记附加到任务的 Amazon Elastic Block Service (Amazon EBS) 卷。默认情况下未激活 PropagateTags 参数。要将标签从任务定义或服务复制到任务,请激活该参数。
要在创建服务时激活 enableECSManagedTags 参数,请运行以下 create-service 命令:
aws ecs create-service \ --cluster clustername \ --service-name servicename \ --task-definition taskdefinitionname \ --desired-count 1 \ --launch-type FARGATE \ --enable-ecs-managed-tags \ --network-configuration "awsvpcConfiguration={subnets=[subnet-ABCD],securityGroups=[sg-ABC],assignPublicIp=ENABLED}"
**注意:**请将 clustername 替换为您的集群名称,将 servicename 替换为您的服务名称,将 taskdefinitionname 替换为您的任务定义名称。将您的网络配置添加到 --network-configuration 配置选项中。
要在运行任务时激活 enableECSManagedTags 参数,请运行以下 run-task 命令:
aws ecs run-task \ --cluster clustername \ --task-definition taskdefinitionname \ --launch-type FARGATE \ --enable-ecs-managed-tags \ --network-configuration "awsvpcConfiguration={subnets=[subnet-ABC],securityGroups=[sg-ABC]}"
**注意:**请将 clustername 替换为您的集群名称,将 taskdefinitionname 替换为您的任务定义名称。将您的网络配置添加到 --network-configuration 配置选项中。
激活 Amazon ECS 托管标签
使用 Amazon ECS 控制台或 AWS CLI 激活托管标签。
Amazon ECS 控制台
完成以下步骤:
- 打开 Amazon ECS 控制台。
- 为您的 Amazon ECS 资源选择 Region(区域)。
- 在导航窗格中,选择 Task definitions(任务定义)。
- 从资源列表中选择任务定义,然后选择 Actions(操作)。
- 选择 Create service(创建服务)或 Run task(运行任务)。
- 在 Task tagging configuration(任务标记配置)下,选择 Enable ECS managed tags(启用 ECS 托管标签)。
**注意:**要将标签从任务定义或服务复制到任务,请在 Propagate tags from(传播以下来源的标签)中选择您的资源。默认情况下,PropagateTags 参数设置为 Do not propagate(不传播)。
AWS CLI
运行以下 update-service 命令:
aws ecs update-service --cluster clustername --service servicename --enable-ecs-managed-tags --force-new-deployment
**注意:**请将 servicename 替换为您的服务名称,将 clustername 替换为您的集群名称。
设置标签传播
默认情况下,标签传播处于禁用状态。要检查是否在特定服务中激活了 PropagateTags,请运行以下 describe-services 命令:
aws ecs describe-services --services servicename --cluster clustername --region region --query 'services[*].propagateTags' --output text
**注意:**请将 servicename 替换为您的服务名称,将 clustername 替换为您的集群名称,将 region 替换为您的区域。
要在创建服务时添加标签传播,请运行以下 create-service 命令:
aws ecs create-service \ --cluster clustername \ --service-name servicename \ --task-definition taskdefinitionname \ --desired-count 1 \ --launch-type FARGATE \ --enable-ecs-managed-tags \ --propagate-tags TASK_DEFINITION-SERVICE \ --network-configuration "awsvpcConfiguration={subnets=[subnet-ABCD],securityGroups=[sg-ABC],assignPublicIp=ENABLED}"
**注意:**请将 clustername 替换为您的集群名称,将 servicename 替换为您的服务名称,将 taskdefinitionname 替换为您的任务定义。此外,请将 FARGATE 替换为您的启动类型,并根据您要传播任务的位置,将 TASK_DEFINITION-SERVICE 替换为 TASK_DEFINITION 或 SERVICE。将您的网络配置添加到 --network-configuration 配置选项中。
要在运行任务时添加标签传播,请运行以下 run-task 命令:
aws ecs run-task \ --cluster clustername \ --task-definition taskdefinitionname \ --launch-type FARGATE \ --enable-ecs-managed-tags \ --propagate-tags TASK_DEFINITION-SERVICE \ --network-configuration "awsvpcConfiguration={subnets=[subnet-ABC],securityGroups=[sg-ABC]}"
**注意:**请将 clustername 替换为您的集群名称,将 taskdefinitionname 替换为您的任务定义。此外,请将 FARGATE 替换为您的启动类型,并根据您要传播任务的位置,将 TASK_DEFINITION-SERVICE 替换为 TASK_DEFINITION 或 SERVICE。将您的网络配置添加到 --network-configuration 配置选项中。
要为现有服务添加标签传播,请运行以下 update-service 命令:
aws ecs update-service --cluster clustername --service servicename --propagate-tags servicetagdefinition --force-new-deployment
**注意:**请将 servicename 替换为您的服务名称,将 clustername 替换为您的集群名称,将 servicetagdefinition 替换为您的服务或标签定义。
您必须激活成本分配标签,这样它们才能显示在账单报告中。
**注意:**激活标签最多可能需要 24 小时。
相关信息
- 语言
- 中文 (简体)
