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 YAML formaté JSON ou formaté. 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 EC2 instance Amazon, notamment son type, son AMI identifiant, les mappages de périphériques par blocs et le nom de sa paire de EC2 clés Amazon. 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 ami-0ff8a91507f77f867 AMI ID, un type d't2.microinstance, un nom de paire de testkey clés et un EBS volume Amazon.

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 élastique (EIP) et l'associer à l'EC2instance Amazon, 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 EC2 instance Amazon ; toutefois, les CloudFormation modèles ont 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 de plus amples informations, veuillez consulter 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 (RDSAmazon). 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 API, ou AWS CLI.

Pour de plus amples informations, veuillez consulter Gestion AWS ressources en tant qu'unité unique avec AWS CloudFormation piles .

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 RDS base de données Amazon, 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 de plus amples informations, veuillez consulter Mettre à jour CloudFormation les piles à l'aide d'ensembles 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 EC2 instances à 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. Supposons, par exemple, que vous disposiez d'un modèle qui décrit une EC2 instance avec un type d't2.microinstance. Lorsque vous utilisez ce modèle pour créer une pile, vous CloudFormation appelez l'instance Amazon EC2 Create API et spécifiez le type d'instance en tant quet2.micro. Le schéma suivant résume le CloudFormation flux de travail de création de piles.

Modèle créé ou existant enregistré localement, ou dans un bucket, utilisé pour créer une pile.
  1. Utilisez Compositeur d'infrastructure votre propre éditeur de texte pour créer ou modifier un CloudFormation modèle JSON ou un YAML format. 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. Supposons, par exemple, que vous souhaitiez créer une EC2 instance. Votre modèle peut déclarer une EC2 instance Amazon 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 un Amazon S3URL. 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'CreateStackAPIopération 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 télé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éez ou mettez à jour une pile, spécifiez l'Amazon S3 URL d'un fichier 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.

Modèle utilisant un ensemble de modifications pour afficher la valeur modifiée avant d'exécuter l'ensemble de modifications pour mettre à jour la 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 de plus amples informations, veuillez consulter Comprendre les comportements de mise à jour des ressources de pile.

  1. Vous pouvez modifier un modèle de CloudFormation pile à l'aide Compositeur d'infrastructure d'un éditeur de texte. Par exemple, si vous souhaitez modifier le type d'instance d'une EC2 instance, vous devez modifier la valeur de la InstanceType propriété dans le modèle de la pile d'origine. Pour de plus amples informations, veuillez consulter Mettez à jour votre modèle de pile.

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

  3. Créez un ensemble de modifications en spécifiant la pile que vous souhaitez mettre à jour et l'emplacement du modèle modifié, par exemple un chemin sur votre ordinateur local ou un Amazon S3URL. 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 Mettre à jour CloudFormation les piles à l'aide d'ensembles 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'DeleteStackAPIopération 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.