Amazon ECS の短いサービス ARN を長い ARN に移行する
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
-
作成日をメモします。
短い ARN 形式を使用する IAM ポリシーがある場合は、長い ARN 形式に更新します。
各
ユーザー入力プレースホルダー
を独自の情報に置き換えます。arn:aws:ecs:
region
:aws_account_id
:service/cluster-name
/service-name
詳細については、「AWS Identity and Access Management ユーザーガイド」の「Editing IAM policies」(IAM ポリシーの編集) を参照してください。
短い 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 形式を有効にします。これにより、サービスの一部として実行されているタスクは、長い 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 を移行するには、以下を使用します。
コンソールをhttps://console.aws.amazon.com/ecs/v2
で開きます。 -
[Clusters] (クラスター) ページで、クラスターを選択します。
-
[サービス] セクションで、ARN 列に警告があるサービスを選択します。
[サービス詳細] ページが表示されます。
-
[長い ARN に移行する] を選択します。
サービス移行ダイアログボックスが表示されます。
-
移行 を選択します。
前提条件を完了したら、サービスにタグを付けることができます。次のコマンドを実行してください。
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 リファレンス」の「create-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
アカウント設定を既に有効にしていてもこのエラーが発生する場合は、長い ARN 形式のアカウント設定が、最初にサービスを作成した特定の IAM プリンシパルに対して有効になっていない可能性があります。
-
サービスを作成したプリンシパルを特定します。
コンソールでは、Amazon ECS コンソールのサービスの詳細ページの [設定とネットワーク] タブの [作成者] フィールドで情報を確認できます。
AWS CLI の場合、次のコマンドを実行します。
user-input
を独自の値に置き換えます。aws ecs describe-services --cluster
cluster-name
--servicesservice-name
--query 'services[0].{createdBy: createdBy}'
-
その特定のプリンシパルに必要なアカウント設定を有効にします。これには以下の 2 つの方法があります。
-
そのプリンシパルの IAM ユーザーまたはロールを引き受けます。次に、
put-account-setting
を実行します。 -
principal-arn
で作成プリンシパルを指定しながら、ルートユーザーを使用してコマンドを実行します。例。
[principal-arn]
をステップ 1 で確認した値に置き換えます。aws ecs put-account-setting --name serviceLongArnFormat --value enabled --principal-arn
arn:aws:iam::123456789012:role/jdoe
-
どちらの方法でも、サービスを作成したプリンシパルに必要な serviceLongArnFormat
アカウント設定が有効になり、ARN 移行を続行できます。