AWS CloudFormation에서 AWS::EC2::Instance 리소스를 만들려고 할 때 “AWS::EC2::Instance 리소스에서 태그를 처리할 수 있는 IAM 권한이 없음(Did not have IAM permissions to process tags on AWS::EC2::Instance resource)” 오류가 발생합니다.
간략한 설명
AWS::EC2::Instance 리소스를 만들 때 이 오류가 나타나며 다음 사항에 해당됩니다.
- CloudFormation 템플릿에서 Tags 속성 값을 지정합니다.
- AWS Identity and Access Management(IAM) 사용자, IAM 역할 또는 CloudFormation 서비스 역할에는 필요한 ec2:CreateTags 권한이 없습니다.
이 오류가 발생하면 리소스가 CREATE_COMPLETE로 표시되더라도 Tags 속성을 사용하여 지정된 사용자 지정 태그가 EC2 인스턴스에 적용되지 않습니다.
참고: AWS CLI(AWS 명령줄 인터페이스) 명령을 실행할 때 오류가 발생할 경우 AWS CLI의 최신 버전을 사용하고 있는지 확인하세요.
해결 방법
1. CloudFormation 스택을 생성하는 IAM 사용자, IAM 역할 또는 CloudFormation 서비스 역할에 영향을 받는 EC2 인스턴스에서 ec2:CreateTags 및 ec2:DeleteTags를 수행할 권한이 있는지 확인합니다.
2. CloudFormation 콘솔 또는 AWS CLI를 사용하여 영향을 받는 CloudFormation 템플릿에서 AWS::EC2::Instance 리소스의 Tags 속성을 주석 처리합니다. 그런 다음 스택을 업데이트합니다.
CloudFormation 콘솔 사용:
CloudFormation 템플릿에서 Tags 속성을 주석 처리한 다음 스택을 업데이트합니다. 예:
Resources:
MyEC2Instance:
Type: AWS::EC2::Instance
Properties:
# Tags:
# - Key: key1
# Value: value1
# - Key: key2
# Value: value2
AWS CLI 사용:
update-stack 명령을 실행합니다.
aws cloudformation update-stack --region YOUR_REGION --template-body file://YOUR_TEMPLATE_FILE_TAGS_COMMENTED —stack-name YOUR_STACK_NAME
참고: YOUR_REGION, YOUR_TEMPLATE_FILE_TAGS_COMMENTED 및 YOUR_STACK_NAME을 사용자 값으로 바꿉니다.
3. CloudFormation 콘솔 또는 AWS CLI를 사용하여 영향을 받는 CloudFormation 템플릿에서 AWS::EC2::Instance 리소스의 Tags 속성의 주석을 제거합니다. 그럼 다음 스택을 다시 업데이트합니다.
CloudFormation 콘솔 사용:
CloudFormation 템플릿에서 Tags 속성에서 주석을 제거한 다음 스택을 업데이트합니다. 예:
Resources:
MyEC2Instance:
Type: AWS::EC2::Instance
Properties:
Tags:
- Key: key1
Value: value1
- Key: key2
Value: value2
AWS CLI 사용:
update-stack 명령을 실행합니다.
aws cloudformation update-stack --region YOUR_REGION --template-body file://YOUR_TEMPLATE_FILE_TAGS_UNCOMMENTED —stack-name YOUR_STACK_NAME
참고: YOUR_REGION, YOUR_TEMPLATE_FILE_TAGS_UNCOMMENTED 및 YOUR_STACK_NAME을 사용자 값으로 바꿉니다.
4. EC2 콘솔 또는 AWS CLI를 사용하여 태그가 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 올바르게 적용되었는지 확인합니다.
Amazon EC2 콘솔 사용:
1. Amazon EC2 콘솔을 엽니다.
2. 탐색 창의 [인스턴스(Instances)] 섹션에서 [인스턴스(Instances)]를 선택합니다.
3. CloudFormation을 통해 생성된 인스턴스를 선택합니다.
4. [태그(Tags)] 탭을 선택한 다음 CloudFormation 템플릿에 지정된 사용자 지정 태그가 테이블에 채워져 있는지 확인합니다.
AWS CLI 사용:
describe-tags 명령을 실행합니다.
aws ec2 describe-tags —filters "Name=resource-id,Values=YOUR_INSTANCE_ID"
참고: YOUR_INSTANCE_ID를 스택에 있는 EC2 인스턴스의 인스턴스 ID로 바꿉니다.