Desidero creare istanze Amazon Elastic Compute Cloud (Amazon EC2) tramite AWS CloudFormation. Ma la mia politica di AWS Identity and Access Management (IAM) per RunInstances prevede restrizioni basate su tag.
Breve descrizione
Puoi utilizzare un modello di avvio per creare istanze Amazon EC2 tramite CloudFormation.
La proprietà Tags della risorsa AWS::EC2::Instance non si estende ai volumi creati tramite CloudFormation. Se la policy IAM associata all'utente o al ruolo presenta restrizioni sui tag di volume, viene visualizzato il seguente errore:
"Non sei autorizzato a eseguire questa operazione."
Per passare i tag tramite CloudFormation a EC2:createVolume, devi definire i tag nella risorsa AWS::EC2::LaunchTemplate nel tuo modello CloudFormation.
Risoluzione
- Definisci un modello di avvio nello stack con i tag richiesti dalla policy IAM. Ad esempio:
RequiredTagsLaunchTemplate:
Type: 'AWS::EC2::LaunchTemplate'
Properties:
LaunchTemplateData:
TagSpecifications:
- ResourceType: volume
Tags:
- Key: Env
Value: Dev
- Allega il tuo modello di lancio alla tua risorsa di istanza EC2. Ad esempio:
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
- Verifica che il tuo modello di lancio contenga tutti i tag necessari.
Importante: devi confermare che il ruolo o l'utente che crea lo stack disponga delle autorizzazioni per creare e utilizzare un modello di avvio senza restrizioni di etichettatura. Puoi utilizzare la chiave di condizione aws:CalledVia per creare una nuova dichiarazione che esenta le chiamate API CloudFormation dai requisiti di etichettatura.