Quero criar instâncias do Amazon Elastic Compute Cloud (Amazon EC2) por meio do AWS CloudFormation. Minha política do AWS Identity and Access Management (AWS IAM) para RunInstances tem restrições baseadas em tags.
Solução
A propriedade Tags do recurso AWS::EC2::Instance não se estende aos volumes que você cria 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 essa 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.
Para definir essa configuração, conclua as seguintes etapas:
-
Defina um recurso de modelo de inicialização na pilha com as tags necessárias para a política do IAM e ResourceType definidos como volume.
Este é um exemplo de código que você pode usar:
RequiredTagsLaunchTemplate:
Type: 'AWS::EC2::LaunchTemplate'
Properties:
LaunchTemplateData:
TagSpecifications:
- ResourceType: volume
Tags:
- Key: Env
Value: Dev
-
Anexe o modelo de inicialização ao seu recurso de instância do EC2.
Este é um exemplo de código que você pode usar:
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
-
Verifique se seu modelo de inicialização tem todas as tags necessárias e, em seguida, crie ou atualize sua pilha.
Importante: A função ou o usuário que cria a pilha deve ter permissão para criar e usar um modelo de inicialização sem restrições de marcação. Você pode usar a chave de condição aws:CalledVia para criar uma nova instrução que isenta as chamadas de API do CloudFormation dos requisitos de tags.