Comment puis-je référencer une ressource dans une autre pile à partir d’un modèle AWS CloudFormation ?

Lecture de 4 minute(s)
0

Je souhaite référencer une ressource dans une autre pile AWS CloudFormation lorsque je crée un modèle.

Brève description

La résolution suivante fournit un exemple d’une méthode permettant de créer une référence entre piles. Pour plus d’instructions, consultez l’aide Procédure pas à pas : création de références à des sorties de ressources dans une autre pile AWS CloudFormation.

Remarque : Pour référencer une ressource dans une autre pile AWS CloudFormation, vous devez d’abord 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. Utilisez ensuite la fonction intrinsèque Fn::ImportValue pour importer la valeur dans n’importe quelle pile au sein du même compte et de la même région AWS. AWS CloudFormation identifie les valeurs exportées en fonction des noms indiqués dans le modèle. Ils doivent être uniques à votre compte et à votre région AWS.

Résolution

Les étapes suivantes expliquent 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éation d’une pile pour exporter les 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éation d’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 Créer une pile, puis choisissez Modèle de conception.

3.    Dans l’onglet Paramètres de l’éditeur de code, choisissez Modèle.

4.    Copiez et collez le modèle suivant dans l’éditeur de code, puis mettez-le à jour en ajoutant les valeurs appropriées dans Type d'instance et ID de l'image :

{
  "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 comme valeur pour NetworkStackParameter. La valeur NetworkStack remplace le nom de pile dans les fonctions Fn::ImportValue correspondantes.

**Remarque :**Pour des exemples de modèles d’importation et d’exportation, consultez Fn::ImportValue.

5.    Cliquez sur l’icône Créer une pile, puis sur Suivant.

6.    Dans le champ Nom de la pile (nom de la pile), saisissez le nom de la pile.

7.    Dans Paramètres, saisissez le nom de la pile réseau (NetworkStack) que vous souhaitez utiliser pour la création de références entre piles.

8.    Choisissez Suivant, puis Suivant à nouveau et Créer.

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

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

11.    Choisissez l’affichage de la 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 pendant qu’une autre pile importe ces valeurs. Pour mettre à jour les valeurs d’exportation de la pile source, remplacez d’abord manuellement les valeurs réelles des piles important les valeurs d’exportation de la pile source. Vous pourrez ensuite 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 d’une région AWS, utilisez la console AWS CloudFormation ou exécutez la commande list-exports. Le nom d’exportation doit être unique pour le compte par région AWS.

Informations connexes

Comment utiliser les paramètres dans AWS Systems Manager Parameter Store pour partager les valeurs entre les piles CloudFormation ?

Modèles AWS CloudFormation

AWS::EC2::Instance

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an