Quiero crear instancias de Amazon Elastic Compute Cloud (Amazon EC2) a través de AWS CloudFormation. Mi política de AWS Identity and Access Management (IAM) para RunInstances tiene restricciones basadas en etiquetas.
Resolución
La propiedad Tags del recurso AWS::EC2::Instance no se extiende a los volúmenes que creas mediante CloudFormation. Si la política de IAM asociada al usuario o al rol tiene restricciones en las etiquetas de volumen, aparecerá el siguiente error: “You are not authorized to perform this operation”.
Para pasar las etiquetas a ec2:CreateVolume a través de CloudFormation, debes definirlas en el recurso AWS::EC2::LaunchTemplate de la plantilla de CloudFormation.
Para configurar estos ajustes, sigue estos pasos:
-
Define un recurso de plantilla de lanzamiento en la pila con las etiquetas necesarias para la política de IAM y ResourceType establecido en volume.
Este es un ejemplo del código que puedes usar:
RequiredTagsLaunchTemplate:
Type: 'AWS::EC2::LaunchTemplate'
Properties:
LaunchTemplateData:
TagSpecifications:
- ResourceType: volume
Tags:
- Key: Env
Value: Dev
-
Adjunta la plantilla de lanzamiento al recurso de instancia de EC2.
Este es un ejemplo del código que puedes 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
-
Comprueba que la plantilla de lanzamiento tenga todas las etiquetas necesarias y, a continuación, crea o actualiza la pila.
Importante: El rol o el usuario que crea la pila debe tener permiso para crear y usar una plantilla de lanzamiento sin restricciones de etiquetado. Puedes usar la clave de condición aws:CalledVia para crear una nueva instrucción que exima a las llamadas a la API de CloudFormation de los requisitos de etiquetado.