web-dev-qa-db-fra.com

AWS cloud formation Template - fournissant des balises pour la pile dans le modèle

Nous voulions utiliser des balises spécifiques à l'entreprise pour les ressources que nous créons dans AWS à des fins de facturation. J'utilise un modèle de formation de nuages ​​pour faire tourner notre instance Elasticbeanstalk et d'autres ressources dépendantes du projet. Lorsque j'utilise la console CloudFormation pour créer une pile, il me demande des balises dans la page après les paramètres. Je dois saisir manuellement les balises de cette pile. Cependant, existe-t-il un moyen de spécifier ces balises (balises pour la pile) dans le modèle de formation de nuage lui-même? De cette façon, le tag se propage aux autres ressources? Je sais que la formation du cloud marque automatiquement les ressources avec le nom de la pile. Mais nous avons besoin d'étiquettes spécifiques à l'entreprise pour facturer des services distincts.

24
user2716913

Lors du lancement d'AWS CloudFormation, les balises demandées seront appliquées à la pile CloudFormation elle-même et (si possible) seront également propagées aux ressources lancées par la pile.

Ces balises peuvent être transmises à l'appel de l'API CreateStack ou à partir de la CLI:

Ces balises sont appliquées à l'ensemble de la pile et ne sont pas incluses dans le modèle CloudFormation.

Cependant, les modèles CloudFormation peuvent inclure des balises pour des ressources spécifiques en cours de création. Par exemple, lors du lancement d'instances Amazon EC2, des balises peuvent être incluses dans le modèle:

"MyInstance" : {
    "Type" : "AWS::EC2::Instance",
    "Properties" : {
        "SecurityGroups" : [ { "Ref" : "MySecurityGroup" } ],
        "AvailabilityZone" : "us-east-1a",
        "ImageId" : "AMI-20b65349",
        "Volumes" : [
            { "VolumeId" : { "Ref" : "MyEBS" },
                       "Device" : "/dev/sdk" }
        ],
        "Tags" : [
            {
                "Key" : "Stage",
                "Value" : "QA"
            }
       ]
    }
}
23
John Rotenstein

Dans l'anatomie du modèle, vous ne pouvez pas définir directement des balises au niveau de la pile. Cependant, vous pouvez créer un modèle d'encapsuleur, ayant une seule ressource de AWS :: CloudFormation :: Stack.

Vous pouvez définir des balises au niveau de la pile sur cette ressource:

{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Description": "WrapperTemplate",

  "Resources": {
    "WrappedStackWithStackLevelTags": {
      "Type" : "AWS::CloudFormation::Stack",
      "Properties" : {
        "Tags" : [ { "Key" : "Stage", "Value" : "QA" } ],
        "TemplateURL" : "your-original-template-s3-url"
      }
    }
  }
}
40
lalyos