Comment CloudFormation fonctionne - 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.

Comment CloudFormation fonctionne

Cette rubrique décrit son CloudFormation fonctionnement et vous présente les concepts clés que vous devez connaître au fur et à mesure de son utilisation.

Concepts clés

Lorsque vous les utilisez CloudFormation, vous travaillez avec des modèles et des piles. Vous créez des modèles pour décrire vos AWS ressources et leurs propriétés. Chaque fois que vous créez une pile, CloudFormation provisionnez les ressources décrites dans votre modèle.

Modèles

Un CloudFormation modèle est un fichier texte au format JSON ou YAML. Vous pouvez enregistrer ces fichiers avec n'importe quelle extension, telle que .json.yaml,.template, ou.txt. CloudFormation utilise ces modèles comme modèles pour développer vos AWS ressources. Par exemple, dans un modèle, vous pouvez décrire une instance Amazon EC2, telle que le type d'instance, l'ID d'AMI, les mappages de périphérique de stockage en mode bloc et le nom de sa paire de clés Amazon EC2. Chaque fois que vous créez une pile, vous spécifiez également un modèle qui CloudFormation permet de créer ce que vous avez décrit dans le modèle.

Par exemple, si vous avez créé une pile avec le modèle suivant, CloudFormation approvisionne une instance avec un ID ami-0ff8a91507f77f867 AMI, un type d't2.microinstance, un nom de paire de testkey clés et un volume Amazon EBS.

JSON

{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "A sample template", "Resources": { "MyEC2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": "ami-0ff8a91507f77f867", "InstanceType": "t2.micro", "KeyName": "testkey", "BlockDeviceMappings": [ { "DeviceName": "/dev/sdm", "Ebs": { "VolumeType": "io1", "Iops": 200, "DeleteOnTermination": false, "VolumeSize": 20 } } ] } } } }

YAML

AWSTemplateFormatVersion: 2010-09-09 Description: A sample template Resources: MyEC2Instance: Type: 'AWS::EC2::Instance' Properties: ImageId: ami-0ff8a91507f77f867 InstanceType: t2.micro KeyName: testkey BlockDeviceMappings: - DeviceName: /dev/sdm Ebs: VolumeType: io1 Iops: 200 DeleteOnTermination: false VolumeSize: 20

Vous pouvez également spécifier plusieurs ressources dans un modèle unique et les configurer pour interagir les unes avec les autres. Par exemple, vous pouvez modifier le modèle précédent pour inclure une adresse IP Elastic (EIP) et l'associer à l'instance Amazon EC2, comme illustré dans l'exemple suivant :

JSON

{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "A sample template", "Resources": { "MyEC2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": "ami-0ff8a91507f77f867", "InstanceType": "t2.micro", "KeyName": "testkey", "BlockDeviceMappings": [ { "DeviceName": "/dev/sdm", "Ebs": { "VolumeType": "io1", "Iops": 200, "DeleteOnTermination": false, "VolumeSize": 20 } } ] } }, "MyEIP": { "Type": "AWS::EC2::EIP", "Properties": { "InstanceId": { "Ref": "MyEC2Instance" } } } } }

YAML

AWSTemplateFormatVersion: 2010-09-09 Description: A sample template Resources: MyEC2Instance: Type: 'AWS::EC2::Instance' Properties: ImageId: ami-0ff8a91507f77f867 InstanceType: t2.micro KeyName: testkey BlockDeviceMappings: - DeviceName: /dev/sdm Ebs: VolumeType: io1 Iops: 200 DeleteOnTermination: false VolumeSize: 20 MyEIP: Type: 'AWS::EC2::EIP' Properties: InstanceId: !Ref MyEC2Instance

Les modèles précédents sont centrés sur une seule instance Amazon EC2 ; toutefois, les CloudFormation modèles possèdent des fonctionnalités supplémentaires que vous pouvez utiliser pour créer des ensembles complexes de ressources et réutiliser ces modèles dans plusieurs contextes. Par exemple, vous pouvez ajouter des paramètres d'entrée dont les valeurs sont spécifiées lorsque vous créez une CloudFormation pile. En d'autres termes, vous pouvez définir une valeur telle que le type d'instance lorsque vous créez une pile au lieu de lorsque vous créez le modèle, ce qui facilite la réutilisation du modèle dans différentes situations.

Pour plus d’informations, consultez Utilisation de CloudFormation modèles.

Piles

Lorsque vous utilisez CloudFormation, vous gérez les ressources associées en tant qu'unité unique appelée pile. Pour créer, mettre à jour et supprimer un ensemble de ressources, vous créez, mettez à jour et supprimez des piles. Toutes les ressources d'une pile sont définies par le CloudFormation modèle de la pile. Supposons que vous ayez créé un modèle qui inclut un groupe Auto Scaling, un équilibreur de charge Elastic Load Balancing et une instance de base de données Amazon Relational Database Service (Amazon RDS). Pour créer ces ressources, vous créez une pile en soumettant le modèle que vous avez créé et en CloudFormation provisionnant toutes ces ressources pour vous. Vous pouvez travailler avec des piles à l'aide de la CloudFormation console, de l'API ou AWS CLI.

Pour plus d’informations, consultez Création et gestion de piles avec AWS CloudFormation.

Jeux de modifications

Si vous avez besoin de modifier les ressources en cours d'exécution d'une pile, vous mettez à jour cette dernière. Avant d'apporter des modifications à vos ressources, vous pouvez générer un jeu de modifications, qui représente un résumé de ces modifications. Les jeux de modification vous permettent d'avoir un aperçu de l'impact possible des modifications d'une pile sur les ressources exécutées (y compris les ressources critiques) avant d'appliquer ces modifications.

Par exemple, si vous modifiez le nom d'une instance de base de données Amazon RDS, vous CloudFormation créerez une nouvelle base de données et supprimerez l'ancienne. Vous perdrez les données de l'ancienne base de données, sauf si vous les avez sauvegardées. Si vous générez un jeu de modifications, vous constaterez que votre modification entraînera le remplacement de votre base de données. Dès lors, vous pourrez prendre les mesures nécessaires avant que de mettre à jour la pile.

Pour plus d’informations, consultez Mise à jour des piles à l'aide de jeux de modifications.

Comment CloudFormation fonctionne

Lorsque vous créez une pile, CloudFormation effectuez des appels de service sous-jacents AWS pour provisionner et configurer vos ressources. CloudFormation ne peut effectuer que les actions que vous êtes autorisé à effectuer. Par exemple, pour créer des instances EC2 à l'aide de CloudFormation, vous devez disposer d'autorisations pour créer des instances. Vous avez besoin d'autorisations similaires pour arrêter les instances lorsque vous supprimez des piles qui contiennent des instances. AWS Identity and Access Management (IAM) vous permet de gérer les autorisations.

Les appels effectués CloudFormation sont tous déclarés par votre modèle. Par exemple, supposons que votre modèle décrit une instance EC2 avec un type d'instance t2.micro. Lorsque vous utilisez ce modèle pour créer une pile, CloudFormation appelez l'API de création d'instance Amazon EC2 et spécifiez le type d'instance en tant que. t2.micro Le schéma suivant résume le CloudFormation flux de travail de création de piles.

  1. Utilisez Application Composer votre propre éditeur de texte pour créer ou modifier un CloudFormation modèle au format JSON ou YAML. Vous pouvez également choisir d'utiliser un modèle fourni. Le CloudFormation modèle décrit les ressources que vous souhaitez et leurs paramètres. Par exemple, supposons que vous souhaitiez créer une instance EC2. Votre modèle peut déclarer une instance Amazon EC2 et décrire ses propriétés, comme illustré dans l'exemple suivant :

    Exemple JSON
    { "AWSTemplateFormatVersion": "2010-09-09", "Description": "A simple EC2 instance", "Resources": { "MyEC2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": "ami-0ff8a91507f77f867", "InstanceType": "t2.micro" } } } }
    Exemple YAML
    AWSTemplateFormatVersion: 2010-09-09 Description: A simple EC2 instance Resources: MyEC2Instance: Type: 'AWS::EC2::Instance' Properties: ImageId: ami-0ff8a91507f77f867 InstanceType: t2.micro
  2. Enregistrez le modèle localement ou dans un compartiment Amazon S3. Si vous avez créé un modèle, enregistrez-le avec une extension de fichier comme .json, .yaml ou .txt.

  3. Créez une CloudFormation pile en spécifiant l'emplacement de votre fichier modèle, tel qu'un chemin sur votre ordinateur local ou une URL Amazon S3. Si le modèle contient des paramètres, vous pouvez spécifier des valeurs d'entrée lorsque vous créez la pile. Les paramètres vous permettent de transmettre des valeurs à votre modèle afin de permettre la personnalisation des ressources chaque fois que vous créez une pile.

    Vous pouvez créer des piles à l'aide de la CloudFormation console, de l'opération CreateStackAPI ou de la commande create-stack AWS CLI .

    Note

    Si vous spécifiez un fichier modèle stocké localement, CloudFormation il est chargé dans un compartiment S3 de votre AWS compte. CloudFormation crée un compartiment pour chaque région dans laquelle vous chargez un fichier modèle. Les buckets sont accessibles à toute personne disposant des autorisations Amazon Simple Storage Service (Amazon S3) sur votre compte. AWS Si un bucket créé par CloudFormation est déjà présent, le modèle est ajouté à ce bucket.

    Pour utiliser votre propre compartiment et gérer ses autorisations, vous pouvez importer manuellement les modèles dans Amazon S3. Ensuite, chaque fois que vous créerez ou mettrez à jour une pile, spécifiez l'URL Amazon S3 d'un fichier de modèle.

CloudFormation fournit et configure les ressources en appelant les AWS services décrits dans votre modèle.

Une fois que toutes les ressources ont été créées, CloudFormation indique que votre pile a été créée. Vous pouvez ainsi commencer à en utiliser les ressources. Si la création de la pile échoue, CloudFormation annulez vos modifications en supprimant les ressources créées.

Mise à jour d'une pile avec les jeux de modifications

Lorsque vous devez mettre à jour les ressources d'une pile, vous pouvez modifier le modèle correspondant. Vous n'avez pas besoin de créer une autre pile et de supprimer l'ancienne. Pour mettre à jour une pile, créez un ensemble de modifications en soumettant une version modifiée du modèle de pile d'origine, des valeurs de paramètres d'entrée différentes, ou les deux. CloudFormation compare le modèle modifié avec le modèle d'origine et génère un ensemble de modifications. Ce dernier répertorie les modifications proposées. Après avoir passé en revue les modifications, vous pouvez démarrer le jeu de modifications pour mettre à jour la pile ou vous pouvez en créer un autre. Le schéma suivant résume le flux de travail de mise à jour d'une pile.

Important

Les mises à jour peuvent entraîner des interruptions. En fonction de la ressource et des propriétés concernées, une mise à jour peut interrompre, voire remplacer, une ressource existante. Pour plus d’informations, consultez AWS CloudFormation mises à jour des piles.

  1. Vous pouvez modifier un modèle de CloudFormation pile à l'aide Application Composer d'un éditeur de texte. Par exemple, si vous voulez modifier le type d'instance EC2, vous modifiez la valeur de la propriété InstanceType dans le modèle de la pile d'origine.

    Pour plus d’informations, consultez Modification d'un modèle de pile.

  2. Enregistrez le CloudFormation modèle localement ou dans un compartiment S3.

  3. Pour créer un jeu de modifications, spécifiez la pile que vous souhaitez mettre à jour et l'emplacement du modèle modifié (par exemple, le chemin d'accès sur votre ordinateur local ou une URL Amazon S3). Si le modèle contient des paramètres, vous pouvez spécifier des valeurs lorsque vous créez le jeu de modifications.

    Pour plus d'informations sur la création de jeux de modifications, consultez Mise à jour des piles à l'aide de jeux de modifications.

    Note

    Si vous spécifiez un modèle stocké sur votre ordinateur local, le télécharge CloudFormation automatiquement dans un compartiment S3 de votre Compte AWS.

  4. Consultez l'ensemble de modifications pour vérifier qu'il CloudFormation effectuera les modifications attendues. Par exemple, vérifiez si des ressources critiques CloudFormation seront remplacées. Vous pouvez créer autant de jeux de modifications que nécessaire pour inclure toutes les modifications que vous voulez.

    Important

    Les jeux de modification n'indiquent pas si la mise à jour de la pile réussira. Par exemple, un ensemble de modifications ne vérifie pas si vous allez dépasser le quota d'un compte, si vous mettez à jour une ressource qui ne prend pas en charge les mises à jour ou si vous ne disposez pas des autorisations suffisantes pour modifier une ressource, ce qui peut entraîner l'échec d'une mise à jour de la pile.

  5. Initiez l'ensemble de modifications que vous souhaitez appliquer à votre pile. CloudFormation met à jour votre pile en ne mettant à jour que les ressources que vous avez modifiées et indique que votre pile a été mise à jour avec succès. Si les mises à jour de la pile CloudFormation échouent, annulez les modifications pour rétablir le dernier état de fonctionnement connu de la pile.

Suppression d'une pile

Lorsque vous supprimez une pile, vous spécifiez la pile à supprimer, puis vous CloudFormation supprimez la pile ainsi que toutes les ressources qu'elle contient. Vous pouvez supprimer des piles à l'aide de la CloudFormation console, de l'opération DeleteStackAPI ou de la commande delete-stack AWS CLI .

Si vous souhaitez supprimer une pile, mais conserver certaines de ses ressources, vous pouvez utiliser une politique de suppression.

Une fois que toutes les ressources ont été supprimées, cela CloudFormation indique que votre pile a été supprimée avec succès. Si vous ne CloudFormation pouvez pas supprimer une ressource, la pile ne sera pas supprimée. Toutes les ressources qui n'ont pas été supprimés resteront tant que vous ne réussirez pas à supprimer la pile.