Référencer les sorties de ressources dans une autre pile CloudFormation - AWS CloudFormation

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Référencer les sorties de ressources dans une autre pile CloudFormation

Cette démonstration vous montre comment référencer les sorties d’une pile CloudFormation dans une autre pile afin de créer des modèles plus modulaires et réutilisables.

Au lieu d’inclure toutes les ressources dans une seule pile, vous créez des ressources AWS associées dans des piles distinctes. Vous pouvez ensuite référencer les sorties de ressources requises à partir d’autres piles. En limitant les références entre piles aux sorties, vous contrôlez les parties d'une pile qui sont référencées par d'autres piles.

Par exemple, supposons que vous disposez d'une pile de réseau constituée d'un VPC, d'un groupe de sécurité, d'un sous-réseau pour les applications web publiques et d'une pile d'applications web publiques distincte. Pour garantir que les applications web publiques utilisent le groupe de sécurité et le sous-réseau de la pile de réseau, vous devez créer une référence entre piles qui permette à la pile d'applications web de faire référence à des sorties de ressource de la pile de réseau. Avec une référence entre piles, les propriétaires des piles d'applications web n'ont pas besoin de créer ou de gérer des règles de mise en réseau ou des ressources.

Pour créer une référence entre piles, utilisez le champ de sortie Export pour signaler la valeur d'une sortie de ressource pour l'exportation. Ensuite, utilisez la fonction intrinsèque Fn::ImportValue pour importer la valeur. Pour de plus amples informations, consultez Obtenir les sorties exportées d’une pile CloudFormation déployée.

Note

CloudFormation est un service gratuit. Cependant, les ressources AWS que vous incluez dans vos piles vous sont facturées au taux en vigueur pour chaque ressource. Pour plus d'informations sur la tarification AWS, consultez la page de détails de chaque produit.

Utilisez un modèle d’exemple pour créer une pile réseau

Avant de commencer cette démonstration, veuillez vérifier que vous disposez des autorisations IAM pour utiliser tous les services suivants : Amazon VPC, Amazon EC2 et CloudFormation.

La pile de réseau contient le VPC, le groupe de sécurité et le sous-réseau que vous souhaitez utiliser dans la pile d'applications web. En plus de ces ressources, la pile de réseau crée une passerelle Internet et des tables de routage pour autoriser l'accès public.

Vous devez créer cette pile avant de créer la pile d'applications web. Si vous créez la pile d'applications web en premier, elle ne contient pas de groupe de sécurité ni de sous-réseau.

Le modèle de pile est disponible à l’adresse suivante : https://s3.amazonaws.com/cloudformation-examples/guide-dutilisation/cross-stack/SampleNetworkCrossStack.template. Pour voir les ressources créées par la pile, cliquez sur le lien, qui ouvre le modèle. Dans la section Outputs, vous pouvez voir les ressources réseau que le modèle d’exemple exporte. Les noms des ressources exportées sont préfixés du nom de la pile dans le cas où vous exportez des ressources de mise en réseau à partir d'autres piles. Lorsque les utilisateurs importent des ressources de mise en réseau, ils peuvent indiquer à partir de quelle pile les ressources sont importées.

Pour créer la pile de réseau
  1. Connectez-vous à la AWS Management Console et ouvrez la console CloudFormation à l’adresse https://console.aws.amazon.com/cloudformation.

  2. Sur la page Piles, choisissez Créer une pile, puis Avec de nouvelles ressources (standard).

  3. Sélectionnez Choisisr un modèle existant, puis dans la section Spécifier le modèle, sélectionnez URL Amazon S3.

  4. Pour URL Amazon S3, collez l’URL suivante : https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleNetworkCrossStack.template.

  5. Choisissez Suivant.

  6. Pour Nom de la pile, tapez SampleNetworkCrossStack, puis choisissez Suivant.

    Note

    Notez le nom de cette pile. Vous en aurez besoin lorsque vous lancerez la pile d'applications web.

  7. Choisissez Suivant. Pour cette procédure, vous n'avez pas besoin d'ajouter de balises ni de spécifier des paramètres avancés.

  8. Assurez-vous que le nom de la pile et l'URL du modèle sont corrects, puis choisissez Créer une pile.

    La création de votre pile par CloudFormation peut prendre plusieurs minutes. Attendez que toutes les ressources aient été créées avant de procéder à la création de la pile d'applications web.

  9. Pour surveiller la progression, affichez les événements de la pile. Pour de plus amples informations, consultez Surveiller la progression de la pile.

Utilisation d’un modèle d’exemple pour créer une pile d’applications Web

La pile d'applications web crée une instance EC2 qui utilise le groupe de sécurité et le sous-réseau de la pile de réseau.

Vous devez créer cette pile dans la même Région AWS que la pile réseau.

Le modèle de pile est disponible à l’adresse suivante : https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleWebAppCrossStack.template. Pour voir les ressources que la pile créera, cliquez sur ce lien, qui ouvre le modèle. Dans la section Resources, affichez les propriétés de l’instance EC2. Vous pouvez voir comment les ressources de mise en réseau sont importées à partir d'une autre pile à l'aide de la fonction Fn::ImportValue.

Pour créer la pile d'applications web
  1. Depuis la page CloudFormation, choisissez Piles, puis Créer une pile avec de nouvelles ressources (standard).

  2. Sélectionnez Choisisr un modèle existant, puis dans la section Spécifier le modèle, sélectionnez URL Amazon S3.

  3. Pour URL Amazon S3, collez l’URL suivante : https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleWebAppCrossStack.template.

  4. Choisissez Suivant.

  5. Pour le Nom de la pile, tapez SampleWebAppCrossStack. Dans la section Paramètres, utilisez la valeur par défaut pour le paramètre NetworkStackName, puis choisissez Suivant.

    L'exemple de modèle utilise la valeur du paramètre pour indiquer à partir de quelle pile les valeurs sont importées.

  6. Choisissez Suivant. Pour cette procédure, vous n'avez pas besoin d'ajouter de balises ni de spécifier des paramètres avancés.

  7. Assurez-vous que le nom de la pile et l'URL du modèle sont corrects, puis choisissez Créer une pile.

    La création de votre pile par CloudFormation peut prendre plusieurs minutes.

Vérification du bon fonctionnement de la pile

Une fois que la pile a été créée, affichez ses ressources et notez l'ID d'instance. Pour plus d'informations sur l'affichage des ressources d'une pile, consultez la page Affichage des informations d’une pile à partir de la console CloudFormation.

Pour vérifier le groupe de sécurité et le sous-réseau de l'instance, examinez les propriétés de l'instance dans la console Amazon EC2. Si l'instance utilise le groupe de sécurité et le sous-réseau de la pile SampleNetworkCrossStack, cela signifie que la référence entre piles a bien été créée.

Servez-vous de la console pour examiner les sorties de pile et l'URL de l'exemple de site web afin de vérifier que l'application web est bien en cours d'exécution. Pour de plus amples informations, consultez Affichage des informations d’une pile à partir de la console CloudFormation.

Dépannage des erreurs de mappage AMI

Si vous recevez l’erreur Template error: Unable to get mapping for AWSRegionArch2AMI::[region]::HVM64, cela signifie que le modèle ne comprend pas de mappage AMI pour votre Région AWS. Au lieu de mettre à jour le mappage, nous vous recommandons d’utiliser les paramètres publics de Systems Manager pour référencer dynamiquement les dernières AMI :

  1. Téléchargez le modèle SampleWebAppCrossStack sur votre ordinateur local à partir de : https://s3.amazonaws.com/cloudformation-examples/guide-d’utilisation/cross-stack/SampleWebAppCrossStack.template.

  2. Supprimez l’intégralité de la section de mappage AWSRegionArch2AMI.

  3. Ajoutez le paramètre Systems Manager suivant :

    "LatestAmiId": { "Description": "The latest Amazon Linux 2 AMI from the Parameter Store", "Type": "AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>", "Default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2" }
  4. Remplacez la référence ImageId existante :

    "ImageId": { "Fn::FindInMap": [ "AWSRegionArch2AMI", { "Ref": "AWS::Region" } , "HVM64" ] },

    par :

    "ImageId": { "Ref": "LatestAmiId" },

    Ce paramètre résout automatiquement la dernière AMI Amazon Linux 2 pour la région dans laquelle vous déployez la pile.

    Pour les autres distributions Linux, utilisez le chemin d’accès au paramètre approprié. Pour plus d’informations, consultez Découverte des paramètres publics dans le stocker de paramètres du Guide de l’utilisateur AWS Systems Manager.

  5. Chargez le modèle modifié dans un compartiment S3 de votre compte :

    aws s3 cp SampleWebAppCrossStack.template s3://amzn-s3-demo-bucket/
  6. Lors de la création de la pile, indiquez l’URL de votre modèle S3 à la place de l’URL d’exemple.

Nettoyage de vos ressources

Pour éviter que des services non souhaités vous soient facturés, supprimez les piles.

Pour supprimer les piles
  1. Dans la console CloudFormation, sélectionnez la pile SampleWebAppCrossStack.

  2. Choisissez Actions, puis Supprimer la pile.

  3. Dans le message de confirmation, choisissez Supprimer.

  4. Une fois que la pile a été supprimée, répétez les mêmes étapes pour la pile SampleNetworkCrossStack.

    Note

    Veuillez patienter jusqu’à ce que CloudFormation supprime complètement la pile SampleWebAppCrossStack. Si l’instance EC2 s’exécute toujours dans le VPC, CloudFormation ne supprime pas le VPC dans la pile SampleNetworkCrossStack.