將 Amazon ECS 短期服務 ARN 遷移至長 ARN - Amazon Elastic Container Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將 Amazon ECS 短期服務 ARN 遷移至長 ARN

Amazon ECS 會為每個服務指派唯一的 Amazon Resource Name (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 之前,請執行下列操作。

  1. 若要查看您是否有短期服務 ARN,請在 Amazon ECS 主控台中檢視服務詳細資訊 (當服務具有短期 ARN 格式時,您會看到警告),或從 serviceARN傳回參數describe-services。當 ARN 不包含叢集名稱時,您會有一個簡短的 ARN。以下是短 ARN 的格式:

    arn:aws:ecs:region:aws_account_id:service/service-name

  2. 請注意在日期建立的 。

  3. 如果您有使用短 ARN 格式的 IAM 政策,請將其更新為長 ARN 格式。

    將每個使用者輸入預留位置替換為自己的資訊。

    arn:aws:ecs:region:aws_account_id:service/cluster-name/service-name

    如需詳細資訊,請參閱《 AWS Identity and Access Management 使用者指南》中的編輯 IAM 政策

  4. 如果您有使用短 ARN 格式的工具,請將其更新為長 ARN 格式。

    將每個使用者輸入預留位置替換為自己的資訊。

    arn:aws:ecs:region:aws_account_id:service/cluster-name/service-name

  5. 啟用服務長 ARN 格式。執行 put-account-setting 並將 serviceLongArnFormat 選項設定為 enabled。如需詳細資訊,請參閱《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 } }
  6. 啟用任務長 ARN 格式。這可讓執行為服務一部分的任務具有長 ARN 格式。執行 put-account-setting 並將 taskLongArnFormat 選項設定為 enabled。如需詳細資訊,請參閱《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。

  1. 開啟主控台,網址為 https://console.aws.amazon.com/ecs/v2

  2. 叢集頁面上,選擇叢集。

  3. 服務區段中,選擇 ARN 欄中有警告的服務。

    服務詳細資訊頁面隨即出現。

  4. 選擇遷移至長 ARN

    遷移服務對話方塊隨即出現。

  5. 選擇 Migrate (遷移)

完成先決條件後,您可以標記您的服務。執行以下命令:

對於具有短 ARN 的服務,Amazon ECS 會考慮在 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

下列範例會將 MyService 標籤與索引鍵設為 "TestService" 且值設為 "WebServers:

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 將標籤從任務定義或服務傳播到任務,update-service請使用 propagateTags 參數執行 。如需詳細資訊,請參閱《 AWS Command Line Interface 參考》中的 update-service

故障診斷

有些使用者從短 ARN 格式遷移到長 ARN 格式時,可能會遇到下列錯誤。

There was an error while migrating the ARN of service service-name. The specified account does not have serviceLongArnFormat or taskLongArnFormat account settings enabled. Add account settings in order to enable tagging.

如果您已啟用serviceLongArnFormat帳戶設定,但仍遇到此錯誤,可能是因為尚未為最初建立服務的特定 IAM 主體啟用長 ARN 格式的帳戶設定。

  1. 識別建立服務的委託人。

    1. 在 主控台中,此資訊可在 Amazon ECS 主控台的服務詳細資訊頁面上的組態和聯網索引標籤的建立者欄位中取得。

    2. 針對 AWS CLI,執行下列命令:

      user-input 取代為您的值。

      aws ecs describe-services --cluster cluster-name --services service-name --query 'services[0].{createdBy: createdBy}'
  2. 為該特定委託人啟用必要的帳戶設定。您可採用下列其中一種方式來這麼做:

    1. 擔任該委託人的 IAM 使用者或角色。然後執行 put-account-setting

    2. 使用根使用者執行 命令,同時使用 指定建立主體principal-arn

      範例。

      principal-arn 取代為步驟 1 的值。

      aws ecs put-account-setting --name serviceLongArnFormat --value enabled --principal-arn arn:aws:iam::123456789012:role/jdoe

這兩種方法都會在建立服務的主體上啟用必要的serviceLongArnFormat帳戶設定,以允許 ARN 遷移繼續進行。