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 YAML ou JSON. Vous pouvez enregistrer ces fichiers avec n'importe quelle extension, telle que .yaml.json,.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, comme le type d'instance, l'ID de l'AMI, les mappages de périphériques en mode bloc 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 que CloudFormation utilise pour 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.

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

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 } } ] } } } }

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' EC2 instance Amazon, comme illustré dans l'exemple suivant :

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

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" } } } } }

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.

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 ELB 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.

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.

Comment CloudFormation fonctionne

Lorsque vous créez CloudFormation votre stack, CloudFormation vous effectuez des appels de service sous-jacents AWS pour provisionner et configurer les ressources décrites dans votre modèle. Vous devez disposer des autorisations nécessaires pour créer ces ressources. Par exemple, pour créer des EC2 instances à l'aide de CloudFormation, vous devez disposer d'autorisations pour créer des instances. Vous gérez ces autorisations avec Gestion des identités et des accès AWS (IAM).

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, CloudFormation appelez l'API Amazon EC2 Create instance et spécifiez le type d'instance en tant quet2.micro. Le schéma suivant résume le flux de travail CloudFormation permettant de créer des piles.

Un modèle existant ou nouvellement créé, enregistré localement ou dans un compartiment, utilisé pour créer une pile.
Pour créer une pile
  1. Utilisez un éditeur de texte pour créer un CloudFormation modèle au format YAML ou JSON. Le modèle CloudFormation décrit les ressources que vous voulez ainsi que leurs paramètres. Utilisez Infrastructure Composer pour visualiser et valider votre modèle. Cela vous aide à vous assurer que votre modèle est bien structuré et exempt d’erreurs de syntaxe. Pour de plus amples informations, veuillez consulter Utilisation de CloudFormation modèles.

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

  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.

    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.

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 restaure vos modifications en supprimant les ressources qu'il a créées.

Mise à jour d’une pile avec un jeu 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 jeu de modifications pour afficher la valeur modifiée avant d’exécuter le jeu de modifications afin de mettre la pile à jour.
Pour mettre à jour une pile avec un jeu de modifications
  1. Vous pouvez modifier un modèle de CloudFormation pile à l'aide Infrastructure Composer d'un éditeur de texte. Pour de plus amples informations, veuillez consulter Mettre à jour votre modèle de pile.

    Lorsque vous mettez votre modèle à jour, gardez à l’esprit que certaines mises à jour peuvent provoquer 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 d’une 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). 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 votreCompte AWS.

  4. Consultez l'ensemble de modifications pour vérifier qu'il CloudFormation effectuera les modifications attendues. Par exemple, vérifiez s'il est CloudFormation prévu de remplacer les ressources critiques de la pile. 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 jeu de modifications ne vérifie pas si vous dépassez un quota défini dans votre compte, si vous mettez à jour une ressource non compatible avec ce type de modification ou si vous disposez des autorisations suffisantes pour modifier une ressource, ce qui peut entraîner l’échec de la 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.

Façons de démarrer avec CloudFormation

Pour créer une CloudFormation pile Hello World avec la console, consultezCréation de votre première pile.

Pour un apprentissage guidé, essayez l’atelier Mise en route avec CloudFormation, qui propose une expérience pratique du développement de modèles.