Amazon ECS 단기 서비스 ARN을 긴 ARN으로 마이그레이션 - Amazon Elastic Container Service

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을 마이그레이션하기 전에 다음 작업을 수행합니다.

  1. 짧은 서비스 ARN이 있는지 확인하려면 Amazon ECS 콘솔에서 서비스 세부 정보를 보거나(서비스의 ARN 형식이 짧으면 경고가 표시됨) describe-services에서 반환되는 serviceARN 반환 파라미터를 확인합니다. ARN에 클러스터 이름이 포함되지 않은 경우 짧은 ARN입니다. 짧은 ARN의 형식은 다음과 같습니다.

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

  2. 생성 날짜를 기록해 둡니다.

  3. 짧은 ARN 형식을 사용하는 IAM 정책이 있는 경우 긴 ARN 형식으로 업데이트합니다.

    user input placeholder를 사용자의 정보로 바꿉니다.

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

    자세한 내용은 AWS Identity and Access Management 사용 설명서에서 IAM 정책 편집을 참조하세요.

  4. 짧은 ARN 형식을 사용하는 도구가 있는 경우 긴 ARN 형식으로 업데이트합니다.

    user input placeholder를 사용자의 정보로 바꿉니다.

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

  5. 긴 서비스 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 } }
  6. 긴 태스크 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을 마이그레이션합니다.

  1. https://console.aws.amazon.com/ecs/v2에서 콘솔을 엽니다.

  2. 클러스터(Clusters) 페이지에서 클러스터를 선택합니다.

  3. 서비스 섹션에서 ARN 열에 경고가 있는 서비스를 선택합니다.

    서비스 세부 정보 페이지가 나타납니다.

  4. 긴 ARN으로 마이그레이션을 선택합니다.

    서비스 마이그레이션 대화 상자가 나타납니다.

  5. [Migrate]를 선택합니다.

사전 조건을 완료하고 나면 서비스에 태깅할 수 있습니다. 다음 명령 실행:

짧은 ARN이 있는 서비스에 대한 tag-resource API 요청에서 긴 ARN 형식을 전달할 경우, Amazon ECS는 긴 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를 참조하세요.

문제 해결

일부 사용자는 짧은 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의 경우 다음 명령을 실행합니다.

      모든 사용자 입력을 사용자의 값으로 바꿉니다.

      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 마이그레이션을 진행할 수 있습니다.