Amazon ECS 为每个服务分配一个唯一的 Amazon 资源名称(ARN)。2021 年之前创建的服务采用短 ARN 格式:
arn:aws:ecs:
region
:aws_account_id
:service/service-name
Amazon ECS 已将 ARN 格式更改为包含集群名称。这是一种长 ARN 格式:
arn:aws:ecs:
region
:aws_account_id
:service/cluster-name
/service-name
您的服务必须使用长 ARN 格式才能标记服务。
您可以将短 ARN 格式的服务迁移到长 ARN 格式,而无需重新创建服务。您可以使用 API、CLI 或控制台。您不能撤消迁移操作。
如果要使用 AWS CloudFormation 标记简短 ARN 格式的服务,则必须使用 API、CLI 或控制台迁移该服务。迁移完成后,您可以使用 AWS CloudFormation 标记服务。
如果要使用 Terraform 标记简短 ARN 格式的服务,则必须使用 API、CLI 或控制台迁移该服务。迁移完成后,您可以使用 Terraform 标记服务。
完成迁移后,服务将具有以下更改:
-
长 ARN 格式
arn:aws:ecs:
region
:aws_account_id
:service/cluster-name
/service-name
-
当您使用控制台进行迁移时,Amazon ECS 会向服务添加一个标签,其键设置为“ecs:serviceArnMigratedAt”,值设置为迁移时间戳(UTC 格式)。
此标签计入您的标签配额。
-
当 AWS CloudFormation 堆栈中的
PhysicalResourceId
表示服务 ARN 时,该值不会更改,并且将继续作为短服务 ARN。
先决条件
在迁移服务 ARN 之前执行以下操作。
-
要查看您的服务 ARN 是否较短,请在 Amazon ECS 控制台中查看服务详细信息(当服务采用短 ARN 格式时,您会看到警告),或者查看来自
describe-services
的serviceARN
返回参数。当 ARN 不包含集群名称时,您就有一个短 ARN。短 ARN 的格式如下所示:arn:aws:ecs:
region
:aws_account_id
:service/service-name
-
记下已创建日期。
如果您的 IAM 策略使用的是短 ARN 格式,则请将其更新为长 ARN 格式。
将每个
用户输入占位符
替换为您自己的信息。arn:aws:ecs:
region
:aws_account_id
:service/cluster-name
/service-name
有关更多信息,请参阅 AWS Identity and Access Management User Guide 中的 Editing IAM policies。
如果您的工具使用的是短 ARN 格式,则请将其更新为长 ARN 格式。
将每个
用户输入占位符
替换为您自己的信息。arn:aws:ecs:
region
:aws_account_id
:service/cluster-name
/service-name
-
启用服务长 ARN 格式。在
serviceLongArnFormat
选项设置为enabled
的情况下运行put-account-setting
。有关更多信息,请参阅《Amazon Elastic Container Service API 参考》中的 put-account-setting。当您的服务有未知
createdAt
日期时,以根用户身份运行该命令。aws ecs put-account-setting --name serviceLongArnFormat --value enabled
示例输出
{ "setting": { "name": "serviceLongArnFormat", "value": "enabled", "principalArn": "arn:aws:iam::
123456789012:role/your-role
", "type": user } } -
启用任务长 ARN 格式。在
taskLongArnFormat
选项设置为enabled
的情况下运行put-account-setting
。有关更多信息,请参阅《Amazon Elastic Container Service API 参考》中的 put-account-setting。当您的服务有未知
createdAt
日期时,以根用户身份运行该命令。aws ecs put-account-setting --name taskLongArnFormat --value enabled
示例输出
{ "setting": { "name": "taskLongArnFormat", "value": "enabled", "principalArn": "arn:aws:iam::
123456789012:role/your-role
", "type": user } }
过程
使用以下内容迁移您的服务 ARN。
-
在 Clusters(集群)页面上,选择集群。
-
在服务部分中,选择 ARN 列中包含警告的服务。
此时系统会显示服务详细信息页面。
-
选择迁移到长 ARN。
将显示“迁移服务”对话框。
-
选择 Migrate。
完成先决条件后,您可以标记服务。运行以下命令:
Amazon ECS 考虑在带有短 ARN 的服务的 tag-resource
API 请求中传递长 ARN 格式,作为将服务迁移到使用长 ARN 格式的信号。
aws ecs tag-resource \ --resource-arn arn:aws:ecs:
region
:aws_account_id
:service/cluster-name
/service-name
--tags key=key1
,value=value1
以下示例使用键设置为“TestService”、值设置为“WebServers”的标签来标记 MyService:
aws ecs tag-resource \
--resource-arn arn:aws:ecs:us-east-1:123456789012:service/MyCluster/MyService
--tags key=TestService1,value=WebServers
完成先决条件后,您可以标记服务。创建 aws_ecs_service
资源并设置 tags
引用。有关更多信息,请参阅 Terraform 文档中的 Resource: aws_ecs_service
resource "aws_ecs_service" "MyService" {
name = "example"
cluster = aws_ecs_cluster.MyService.id
tags = {
"Name" = "MyService"
"Environment" = "Production"
"Department" = "QualityAssurance"
}
}
后续步骤
您可以向服务添加标签。有关更多信息,请参阅 向 Amazon ECS 资源添加标签。
如果您希望 Amazon ECS 将标签从任务定义或服务传播到任务中,则请使用 propagateTags
参数运行 update-service
。有关更多信息,请参阅《AWS Command Line Interface 参考》中的 update-service。