Quero criar instâncias do Amazon Elastic Compute Cloud (Amazon EC2) por meio do AWS CloudFormation. Mas minha política do AWS Identity and Access Management (IAM) para RunInstances tem restrições baseadas em tags.
Breve descrição
Você pode usar um modelo de execução para criar instâncias do Amazon EC2 por meio do CloudFormation.
A propriedade Tags do recurso AWS::EC2::Instance não se estende aos volumes criados por meio do CloudFormation. Se a política do IAM associada ao usuário ou perfil tiver restrições às tags de volume, você receberá o seguinte erro:
“Você não tem autorização para realizar esta operação.”
Para passar as tags pelo CloudFormation para ec2:CreateVolume, você deve definir as tags no recurso AWS::EC2::LaunchTemplate no modelo do CloudFormation.
Resolução
1.Defina um modelo de execução na pilha com as tags que a política do IAM exige. Por exemplo:
RequiredTagsLaunchTemplate:
Type: 'AWS::EC2::LaunchTemplate'
Properties:
LaunchTemplateData:
TagSpecifications:
- ResourceType: volume
Tags:
- Key: Env
Value: Dev
2.Anexe o modelo de execução ao seu recurso de instância do EC2. Por exemplo:
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
3.Confirme se o modelo de execução tem todas as etiquetas necessárias.
Importante: você deve confirmar se o perfil ou o usuário que cria a pilha tem as permissões para criar e usar um modelo de execução sem restrições de tags. Você pode usar a chave de condição aws:CalledVia para criar uma nova declaração que isenta as chamadas de API do CloudFormation dos requisitos de tags.