Comment puis-je créer une référence à une ressource dans une autre pile à partir d'un modèle AWS CloudFormation ?

Date de la dernière mise à jour : 30/09/2020

Comment puis-je créer une référence à une ressource dans une autre pile AWS CloudFormation lorsque je crée un modèle ?

Brève description

La solution suivante illustre une méthode permettant de créer une référence entre piles. Pour plus d'informations, consultez Procédure pas à pas : création de références à des sorties de ressources dans une autre pile AWS CloudFormation.

Remarque : pour créer une référence à une ressource dans une autre pile AWS CloudFormation, vous devez créer des références entre piles. Pour créer une référence entre piles, utilisez le champ d'exportation pour signaler la valeur d'une sortie de ressource pour l'exportation. Ensuite, utilisez la fonction intrinsèque Fn::ImportValue pour importer la valeur dans n'importe quelle pile dans la même région et le même compte AWS. AWS CloudFormation identifie les valeurs exportées par les noms spécifiés dans le modèle. Ces noms doivent être propres à votre région et à votre compte AWS.

Solution

La procédure suivante montre comment créer une pile AWS CloudFormation nommée NetworkStack. Cette pile crée des ressources liées au réseau et des exportations nommées ${AWS::StackName}-SecurityGroupID et ${AWS::StackName}-SubnetID. ${AWS::StackName} est remplacé par NetworkStack après la création de la pile. Les noms d'exportation finaux sont NetworkStack-SecurityGroupID et NetworkStack-SubnetID.

Créer une pile pour exporter des valeurs de sortie

1.    Créez une pile AWS CloudFormation à l'aide de ce modèle.

2.    Nommez la pile NetworkStack.

Remarque : NetworkStack exporte les valeurs du sous-réseau et du groupe de sécurité.

Créer une instance Amazon Elastic Compute Cloud (Amazon EC2) à l'aide d'un sous-réseau et d'un groupe de sécurité importés

1.    Ouvrez la console AWS CloudFormation.

2.    Choisissez Create Stack (Créer une pile), puis Concevoir un modèle.

3.    Dans l'onglet Paramètres de l'éditeur de code, sélectionnez Modèle.

4.    Copiez et collez le modèle suivant dans l'éditeur de code, puis mettez à jour le modèle avec les valeurs appropriées pour InstanceType et ImageId.

{
  "Parameters": {
    "NetworkStackParameter": {
      "Type": "String"
    }
  },
  "Resources": {
    "WebServerInstance": {
      "Type": "AWS::EC2::Instance",
      "Properties": {
        "InstanceType": "t2.micro",
        "ImageId": "ami-a1b23456",
        "NetworkInterfaces": [
          {
            "GroupSet": [
              {
                "Fn::ImportValue": {
                  "Fn::Sub": "${NetworkStackParameter}-SecurityGroupID"
                }
              }
            ],
            "AssociatePublicIpAddress": "true",
            "DeviceIndex": "0",
            "DeleteOnTermination": "true",
            "SubnetId": {
              "Fn::ImportValue": {
                "Fn::Sub": "${NetworkStackParameter}-SubnetID"
              }
            }
          }
        ]
      }
    }
  }
}

Important : dans le modèle à l'étape 4, utilisez la pile de ressources NetworkStack en tant que valeur pour NetworkStackParameter. La valeur NetworkStack remplace le nom de pile correct dans les fonctions FN::ImportValue correspondantes.

Remarque : pour obtenir des exemples de modèles d'importation et d'exportation, reportez-vous à Fn::ImportValue.

5.    Sélectionnez l'icône Créer une pile, puis Suivant.

6.    Pour Nom de la pile, saisissez un nom à donner à votre pile.

7.    Pour Paramètres, saisissez le nom de la pile réseau (NetworkStack) pour laquelle vous souhaitez effectuer des renvois.

8.    Sélectionnez Suivant, puis à nouveau Suivant, puis Créer.

9.    Une fois la création de la pile terminée, ouvrez la console Amazon EC2.

10.    Dans le volet de navigation, sélectionnez Instances, puis sélectionnez l'instance que vous avez créée avec le modèle à l'étape 4.

11.    Sélectionnez la vue Description, puis vérifiez que le groupe de sécurité et le sous-réseau sont configurés.

Important : vous ne pouvez pas supprimer la pile source ou les valeurs d'exportation de la pile source tandis qu'une autre pile est en train d'importer ces valeurs. Pour mettre à jour les valeurs d'exportation de la pile source, remplacez manuellement les valeurs réelles dans les piles qui sont en train d'importer ces valeurs. Ensuite, vous pouvez mettre à jour les valeurs d'exportation de la pile source.

Pour répertorier toutes les piles qui importent une valeur de sortie exportée, exécutez la commande list-imports : Pour répertorier toutes les exportations au sein d'une région AWS, utilisez la console AWS CloudFormation ou exécutez la commande list-exports. Le nom d'exportation doit être propre au compte en fonction de la région AWS.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?