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 또는 콘솔을 사용하여 수행할 수 있습니다. 마이그레이션 작업은 취소할 수 없습니다.
마이그레이션 프로세스는 원활하며 서비스의 가동 중지 시간을 0으로 유지합니다. 마이그레이션 도중:
-
서비스 가용성: 트래픽 또는 기능을 중단하지 않고 서비스가 정상적으로 계속 실행됩니다.
-
실행 중인 태스크: 기존 태스크는 중단 없이 계속 실행됩니다.
taskLongArnFormat
계정 설정이 활성화된 경우 마이그레이션 후 시작된 새 태스크는 긴 ARN 형식을 사용합니다. -
컨테이너 인스턴스: 컨테이너 인스턴스는 서비스 ARN 마이그레이션의 영향을 받지 않으며 정상적으로 계속 작동합니다.
-
서비스 구성: 태스크 정의, 네트워킹, 로드 밸런서 구성을 포함한 모든 서비스 설정은 변경되지 않습니다.
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 형식으로 업데이트합니다.
user input placeholder
를 사용자의 정보로 바꿉니다.arn:aws:ecs:
region
:aws_account_id
:service/cluster-name
/service-name
자세한 내용은 AWS Identity and Access Management 사용 설명서에서 IAM 정책 편집을 참조하세요.
짧은 ARN 형식을 사용하는 도구가 있는 경우 긴 ARN 형식으로 업데이트합니다.
user input placeholder
를 사용자의 정보로 바꿉니다.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 } }참고
taskLongArnFormat
설정은 기존 태스크를 직접 마이그레이션하지 않습니다. 설정이 활성화된 후 생성되는 새 태스크의 ARN 형식에만 영향을 줍니다. 실행 중인 기존 태스크는 일반적인 서비스 작업(예: 배포 또는 조정 활동)을 통해 대체될 때까지 현재 ARN 형식을 유지합니다.
절차
다음을 사용하여 서비스 ARN을 마이그레이션합니다.
https://console.aws.amazon.com/ecs/v2
에서 콘솔을 엽니다. -
클러스터(Clusters) 페이지에서 클러스터를 선택합니다.
-
서비스 섹션에서 ARN 열에 경고가 있는 서비스를 선택합니다.
서비스 세부 정보 페이지가 나타납니다.
-
긴 ARN으로 마이그레이션을 선택합니다.
서비스 마이그레이션 대화 상자가 나타납니다.
-
[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 형식의 계정 설정이 활성화되지 않았기 때문일 수 있습니다.
-
서비스를 생성한 위탁자를 식별합니다.
콘솔에서 정보는 Amazon ECS 콘솔의 서비스 세부 정보 페이지에 있는 구성 및 네트워킹 탭의 생성자 필드에서 확인할 수 있습니다.
AWS CLI의 경우 다음 명령을 실행합니다.
모든
사용자 입력
을 사용자의 값으로 바꿉니다.aws ecs describe-services --cluster
cluster-name
--servicesservice-name
--query 'services[0].{createdBy: createdBy}'
-
해당 위탁자에 대해 필요한 계정 설정을 활성화합니다. 이 작업을 다음 중 한 가지 방법으로 수행할 수 있습니다.
-
해당 위탁자의 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 마이그레이션을 진행할 수 있습니다.