AWS CloudFormation을 통해 Amazon Elastic Compute Cloud (Amazon EC2) 인스턴스를 생성하고 싶습니다. RunInstances에 대한 AWS Identity and Access Management(IAM) 정책에 태그 기반 제한이 있습니다.
해결 방법
AWS::EC2::Instance 리소스의 Tags 속성은 CloudFormation을 통해 생성한 볼륨으로 확장되지 않습니다. 사용자 또는 역할과 관련된 IAM 정책에 볼륨 태그에 대한 제한이 있는 경우 다음 오류가 표시됩니다. "You are not authorized to perform this operation."
CloudFormation을 통해 ec2:CreateVolume으로 태그를 전달하려면 CloudFormation 템플릿의 AWS::EC2::LaunchTemplate 리소스에서 태그를 정의해야 합니다.
이 구성을 설정하려면 다음 단계를 완료하십시오.
-
IAM 정책에 필요한 tags와 ResourceType을 volume으로 설정하여 스택에서 시작 템플릿 리소스를 정의합니다.
다음은 사용할 수 있는 코드의 예입니다.
RequiredTagsLaunchTemplate:
Type: 'AWS::EC2::LaunchTemplate'
Properties:
LaunchTemplateData:
TagSpecifications:
- ResourceType: volume
Tags:
- Key: Env
Value: Dev
-
시작 템플릿을 EC2 인스턴스 리소스에 연결합니다.
다음은 사용할 수 있는 코드의 예입니다.
Instance:
Type: 'AWS::EC2::Instance'
Properties:
LaunchTemplate:
LaunchTemplateId: !Ref RequiredTagsLaunchTemplate
Version: 1
InstanceType: r4.xlarge
.
.
RequiredTagsLaunchTemplate:
Type: 'AWS::EC2::LaunchTemplate'
Properties:
LaunchTemplateData:
TagSpecifications:
- ResourceType: volume
Tags:
- Key: Env
Value: Dev
-
시작 템플릿에 필요한 태그가 모두 있는지 확인한 다음 스택을 생성하거나 업데이트합니다.
중요: 스택을 생성하는 역할 또는 사용자는 태깅 제한 없이 시작 템플릿을 생성하고 사용할 권한이 있어야 합니다. aws:CalledVia 조건 키를 사용하여 CloudFormation API 호출에 태깅 요구 사항을 면제하는 새 문을 생성할 수 있습니다.