Amazon ECS 짧은 서비스 ARN을 긴 ARN으로 마이그레이션
Amazon ECS 짧은 서비스 ARN을 긴 ARN으로 마이그레이션
Amazon ECS는 각 서비스에 고유한 Amazon 리소스 이름(ARN)을 할당해요. 2021년 이전에 생성된 서비스는 짧은 ARN 형식이에요. 서비스를 다시 만들지 않고도 짧은 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 또는 콘솔을 사용할 수 있습니다. 마이그레이션 작업은 되돌릴 수 없습니다. 마이그레이션 과정은 원활하며 서비스에 제로 다운타임을 보장합니다. 마이그레이션 중:
- 서비스 가용성: 서비스는 트래픽이나 기능에 중단 없이 정상적으로 계속 실행됩니다.
- 실행 중인 작업: 기존 작업은 중단 없이 계속 실행됩니다. 마이그레이션 후 시작된 새 작업은
taskLongArnFormat계정 설정이 활성화되어 있으면 긴 ARN 형식을 사용합니다. - 컨테이너 인스턴스: 컨테이너 인스턴스는 서비스 ARN 마이그레이션의 영향을 받지 않으며 정상적으로 계속 작동합니다.
- 서비스 구성: 작업 정의, 네트워킹, 로드 밸런서 구성을 포함한 모든 서비스 설정은 변경되지 않습니다.
짧은 ARN 형식의 서비스를 태그하기 위해 CloudFormation을 사용하려면 API, CLI 또는 콘솔을 사용해 서비스를 마이그레이션해야 합니다. 마이그레이션이 완료된 후 CloudFormation을 사용해 서비스를 태그할 수 있습니다. 짧은 ARN 형식의 서비스를 태그하기 위해 Terraform을 사용하려면 API, CLI 또는 콘솔을 사용해 서비스를 마이그레이션해야 합니다. 마이그레이션이 완료된 후 Terraform을 사용해 서비스를 태그할 수 있습니다.
마이그레이션이 완료된 후 서비스에는 다음 변경 사항이 있습니다.
- 긴 ARN 형식
arn:aws:ecs:region:aws_account_id:service/cluster-name/service-name - 콘솔로 마이그레이션할 때 Amazon ECS는 키가
"ecs:serviceArnMigratedAt"이고 값이 마이그레이션 타임스탬프(UTC 형식)인 태그를 서비스에 추가합니다. 이 태그는 태그 할당량에 포함됩니다. - 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 형식으로 업데이트하세요. 각 사용자 입력 자리 표시자를 자신의 정보로 바꾸세요.
자세한 내용은 AWS Identity and Access Management User Guide의 Editing IAM policies를 참고하세요.arn:aws:ecs:region:aws_account_id:service/cluster-name/service-name - 짧은 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 Reference의 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 Reference의 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 페이지에서 클러스터를 선택합니다.
- Services 섹션에서 ARN 열에 경고가 있는 서비스를 선택합니다. 서비스 세부 정보 페이지가 나타납니다.
- Migrate to long ARN을 선택합니다. Migrate service 대화 상자가 나타납니다.
- Migrate를 선택합니다.
API/CLI 사용 — 태그 리소스로 마이그레이션
사전 준비 사항을 완료한 후 서비스를 태그할 수 있습니다. 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
Terraform 사용
사전 준비 사항을 완료한 후 서비스를 태그할 수 있습니다. 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"
}
}
다음 단계
서비스에 태그를 추가할 수 있습니다. 자세한 내용은 Adding tags to Amazon ECS resources를 참고하세요. 작업 정의 또는 서비스의 태그를 작업으로 전파하려면 propagateTags 매개변수로 update-service를 실행하세요. 자세한 내용은 AWS Command Line Interface Reference의 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 계정 설정을 이미 활성화했는데도 이 오류가 발생하면, 긴 ARN 형식에 대한 계정 설정이 서비스를 원래 만든 특정 IAM 주체에 대해 활성화되지 않았기 때문일 수 있습니다.
- 서비스를 만든 주체를 식별하세요.
- 콘솔에서 이 정보는 Amazon ECS 콘솔의 서비스 세부 정보 페이지에 있는 Configuration and networking 탭의 Created by 필드에서 확인할 수 있습니다.
- AWS CLI의 경우 다음 명령을 실행하세요. 사용자 입력을 여러분의 값으로 바꾸세요.
aws ecs describe-services --cluster cluster-name --services service-name --query 'services[0].{createdBy: createdBy}'
- 해당 특정 주체에 대해 필요한 계정 설정을 활성화하세요. 다음 방법 중 하나로 할 수 있습니다.
- 해당 주체에 대한 IAM 사용자 또는 역할을 전제(assume)한 다음
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 마이그레이션이 진행되도록 합니다. - 해당 주체에 대한 IAM 사용자 또는 역할을 전제(assume)한 다음