- Création de modèles AWS CloudFormation
- Utilisation d'un modèle AWS CloudFormation pour la création et la gestion de piles
- Utilisation de l'outil AWS CloudFormation Designer pour la création et la modification de modèles
- Utilisation de l'API AWS CloudFormation
- Utilisation des ressources AWS
- Amorçage (bootstrap) des applications et gestion des mises à jour
- Utilisation prévue et restrictions
Les modèles CloudFormation présentent plusieurs avantages :
- Format courant : un modèle CloudFormation est un simple fichier texte au format JSON (JavaScript Object Notation) ou YAML qui décrit l'infrastructure AWS nécessaire à l'exécution d'une application ou d'un service ainsi que les éventuelles interconnexions entre les ressources.
- Gestion des relations : les modèles intègrent de manière concise les relations entre les ressources, par exemple dans le cas où des instances EC2 doivent être associées à un programme d'équilibrage de charge Elastic Load Balancing ou si un volume EBS doit se trouver dans la même zone de disponibilité EC2 que l'instance à laquelle il est associé.
- Modèles réutilisables : grâce aux paramètres, un seul modèle peut être utilisé pour plusieurs déploiements d'infrastructure avec des valeurs de configuration différentes (par exemple le nombre d'instances à déployer pour l'application).
- Obtention de retours : les modèles incluent également des propriétés de sortie permettant de communiquer les résultats du déploiement ou des informations relatives à la configuration à l'utilisateur. Par exemple, lorsqu'il est instancié, un modèle peut fournir l'URL du point de terminaison Elastic Load Balancing que le client doit utiliser pour se connecter à l'application qui vient d'être instanciée.
- Élimination des collisions : toutes les ressources AWS incluses dans un modèle sont identifiées à l'aide de noms logiques, ce qui permet de créer plusieurs piles à partir d'un modèle sans risque de collision de noms entre les ressources AWS.
- Lancement direct : utilisez n'importe quelle méthode pour lancer une pile sans avoir à enregistrer le modèle dans AWS CloudFormation au préalable.
- Visualisation de la pile (stack) : CloudFormation Designer vous permet de visualiser vos modèles sous forme de diagramme. Vous pouvez visualiser très facilement vos ressources AWS et leurs relations, mais aussi réorganiser leur disposition de façon à ce que le diagramme soit plus pertinent pour vous. Vous pouvez modifier les modèles à l'aide de l'interface par glisser-déposer et de l'éditeur JSON intégré. Les modifications que vous apportez au diagramme sont automatiquement reflétées dans l'éditeur JSON du modèle.
- Recherche de ressources : AWS CloudFormation conserve une copie du modèle de la pile. Vous pouvez donc utiliser AWS Management Console, les outils de ligne de commande ou les API pour vérifier les configurations précises des ressources appliquées lors de la création de la pile.
- Automatisation : vous avez la possibilité d'automatiser la création des modèles en utilisant l'outil ou le langage de programmation de votre choix. Vous pouvez aussi automatiser la création de piles à partir des modèles à l'aide des API CloudFormation, des kits de développement logiciel AWS ou de l'interface de ligne de commande d'AWS.
Un modèle possède la structure JSON de haut niveau suivante :
Découvrez gratuitement AWS
Créez un compte gratuitVous pouvez également vous connecter à la console
Profitez pendant douze mois de l'offre gratuite AWS. Vous bénéficierez également du niveau de base d'AWS Support qui inclut un service client disponible 24 heures/24, 7 jours/7 et 365 jours par an, l'accès à des forums d'assistance et bien d'autres avantages.
{
"Description" : "A text description for the template usage",
"Parameters": {
// A set of inputs used to customize the template per deployment
},
"Resources" : {
// The set of AWS resources and relationships between them
},
"Outputs" : {
// A set of values to be made visible to the stack creator
},
"AWSTemplateFormatVersion" : "2010-09-09"
}
Le modèle suivant est un simple exemple qui montre comment créer une instance EC2 :
{
"Description" : "Create an EC2 instance running the Amazon Linux 32 bit AMI.",
"Parameters" : {
"KeyPair" : {
"Description" : "The EC2 Key Pair to allow SSH access to the instance",
"Type" : "String"
}
},
"Resources" : {
"Ec2Instance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"KeyName" : { "Ref" : "KeyPair" },
"ImageId" : "ami-3b355a52"
}
}
},
"Outputs" : {
"InstanceId" : {
"Description" : "The InstanceId of the newly created EC2 instance",
"Value" : {
"Ref" : "Ec2Instance"
}
}
},
"AWSTemplateFormatVersion" : "2010-09-09"
}
Une pile est un ensemble de ressources créées lors de l'instanciation d'un modèle. Pour créer une pile, il vous suffit de fournir un modèle et tous les paramètres requis dans AWS CloudFormation. En fonction du modèle et des dépendances qu'il indique, AWS CloudFormation détermine quelles ressources AWS doivent être créées, et dans quel ordre.
Pour mettre à jour une pile, vous devez fournir un modèle indiquant la configuration souhaitée pour toutes les ressources de cette pile. Vous pouvez modifier les propriétés des ressources existantes dans votre pile pour réagir aux modifications dans votre environnement ou aux nouvelles exigences d'application. Par exemple, vous pouvez modifier les seuils d'alarme sur vos alarmes AWS CloudWatch ou mettre à jour l'AMI exécutée sur une instance dans votre pile. AWS CloudFormation se charge d'appliquer ces modifications aux différentes ressources de votre pile. Bien souvent, les changements peuvent être appliqués sans que cela affecte votre application en cours d'exécution. Cependant, en cas de modification ne pouvant pas être appliquée de manière dynamique (par exemple une mise à jour de l'AMI d'une instance EC2), AWS CloudFormation crée une nouvelle ressource et la relie à la pile, puis supprime l'ancienne ressource une fois que le service s'est assuré de la réussite de la mise à jour.
AWS CloudFormation crée ou met à jour l'ensemble de la pile. Si une pile ne peut pas être créée ou modifiée dans son intégralité, AWS CloudFormation annule l'opération. Dans le cadre d'un débogage, la fonction d'annulation peut être désactivée afin de réitérer ultérieurement l'opération de création ou de mise à jour de la pile de façon manuelle.
Vous pouvez également utiliser AWS CloudFormation Designer pour créer ou modifier un modèle de pile, puis le soumettre à AWS CloudFormation afin de créer ou de mettre à jour la pile. AWS CloudFormation Designer est disponible dans AWS Management Console.
Il est facile d'accéder à AWS CloudFormation via AWS Management Console, qui vous procure une interface web de type pointer-cliquer permettant de déployer et de gérer les piles applicatives. Vous pouvez créer, supprimer et mettre à jour une application directement depuis AWS Management Console, en quelques étapes simples seulement.
AWS CloudFormation Designer est un outil visuel qui fournit une interface de type déposer-glisser pour ajouter des ressources à vos modèles. CloudFormation Designer vous permet de passer plus de temps à concevoir votre infrastructure AWS, et moins de temps à coder vos modèles manuellement. Par exemple, lorsque vous ajoutez ou supprimez des ressources, CloudFormation Designer modifie automatiquement l'éditeur JSON sous-jacent pour vous. Vous pouvez également utiliser l'éditeur de texte intégré afin de préciser les détails du modèle, notamment les valeurs de propriété de la ressource et les paramètres d'entrée. Consultez la documentation pour en savoir plus.
AWS CloudFormation Designer fait partie de la console AWS CloudFormation. Vous devez ouvrir une session avec vos informations d'identification AWS pour pouvoir utiliser cet outil. Pour utiliser AWS CloudFormation Designer, rendez-vous sur la page https://console.thinkwithwp.com/cloudformation/designer. Les scénarios qui suivent présentent quelques-unes des fonctionnalités d'AWS CloudFormation Designer.
Visualisation des ressources de modèles
Il peut s'avérer difficile d'analyser des fichiers de texte mis en forme avec JSON afin d'identifier les ressources qui figurent dans votre modèle et les relations qui les lient. Avec AWS CloudFormation Designer, vous pouvez ouvrir n'importe quel modèle AWS CloudFormation valide. L'outil affiche toutes les ressources de votre modèle sous forme de diagramme. Vous pouvez facilement voir les ressources du modèle et la façon dont elles sont connectées, sans avoir à lire le code JSON. AWS CloudFormation Designer inclut bien un éditeur de texte JSON afin que vous puissiez toujours voir les détails du modèle si vous en avez besoin.
Simplification de la création de modèles
Lorsque vous travaillez avec des ressources de modèle dans un éditeur de texte, vous devez manuellement éditer le code JSON, ce qui peut être fastidieux et comporte un risque d'introduire des erreurs. Dans AWS CloudFormation Designer, vous utilisez les ressources d'une manière similaire à la façon dont vous utilisez les diagrammes. Vous faites glisser les nouvelles ressources pour les ajouter à votre modèle, puis vous tracez les connexions entre les ressources afin d'illustrer leurs relations. AWS CloudFormation Designer modifie automatiquement le code JSON. Outre la possibilité de visualiser vos ressources, l'éditeur de texte JSON intégré fournit une fonctionnalité de renseignement automatique des champs pour le nom des propriétés des ressources. En utilisant AWS CloudFormation Designer, vous n'avez plus besoin de dédier une grande partie de votre temps au codage manuel de vos modèles et vous pouvez vous consacrer à la conception de votre infrastructure AWS.
AWS CloudFormation fournit un ensemble simple d'API faciles à utiliser et extrêmement flexibles. Pour avoir une liste complète des API AWS CloudFormation disponibles, veuillez consulter le Guide de référence API AWS CloudFormation. Voici une présentation de certaines des API les plus couramment utilisées et de leurs fonctionnalités :
- CreateStack : lance la création d'une pile. Les paramètres d'entrée de cet appel incluent le nom de la pile et le nom de fichier (ou l'URL Amazon S3) du modèle source. Si le processus de création de la pile se termine correctement, la pile obtient l'état CREATE_COMPLETE. Si la création échoue, AWS CloudFormation supprime les ressources créées précédemment, à moins que l'utilisateur n'ait spécifié un indicateur visant à conserver ces éléments à des fins de débogage.
- ListStacks : répertorie toutes les piles associées à votre compte. Utilisez cette option pour afficher l'ensemble des piles et leur état actuel, et savoir ainsi si une pile est en cours de création ou de mise à jour.
- ListStackResources : répertorie tous les noms de ressources et les identifiants AWS qui ont été créés lors de la création d'une pile. Cet appel vous fournit des informations et peut également être utilisé par une application compatible avec AWS CloudFormation pour connaître son environnement.
- DescribeStackEvents : répertorie l'ensemble des opérations et événements générés par AWS CloudFormation pour une pile, afin que vous puissiez voir l'avancement de la création ou de la suppression en cours.
- UpdateStack : lance la procédure de mise à jour pour une pile existante. Les paramètres d'entrée de cet appel incluent le nom de la pile et le nom de fichier (ou l'URL Amazon S3) du modèle mis à jour. Si le processus de mise à jour de la pile se termine correctement, la pile obtient l'état UPDATE_COMPLETE. Si la mise à jour de la pile échoue, AWS CloudFormation annule toutes les modifications de ressources qui ont été effectuée afin que la pile revienne à l'état décrit dans le modèle d'origine.
Vous pouvez également utiliser AWS CloudFormation via des kits de développement logiciel (SDK) AWS et l'interface de ligne de commande d'AWS.
AWS CloudFormation est intégré à Amazon Simple Notification Service (Amazon SNS), ce qui vous permet de recevoir des notifications sur les avancements de la création et de la suppression de la pile. Ainsi, vous êtes informé de l'état de la pile et les autres programmes peuvent réagir en fonction des événements CloudFormation, voire participer au processus de configuration de la pile.
Le modèle AWS CloudFormation est conçu pour améliorer votre expérience existante avec AWS. Chaque ressource dispose d'un ensemble de paramètres avec des noms qui sont identiques aux noms utilisés pour créer les ressources par le biais de leur API d'origine. L'aperçu de modèle suivant montre comment vous définissez un volume Amazon EBS. Le nom logique du volume dans le modèle est « myVolume » et il est de type « AWS::EC2::Volume ». Ses propriétés vous sembleront familières si vous avez déjà utilisé des volumes EBS.
"myVolume" : {
"Type" : "AWS::EC2::Volume",
"Properties" : {
"Size" : "10",
"SnapshotId" : "snap-7b8fd361",
"AvailabilityZone" : "us-east-1a"
}
}
AWS CloudFormation fournit plusieurs scripts d'aide qui peuvent être déployés sur vos instances EC2. Ces scripts fournissent une manière simple de lire les métadonnées de ressources depuis votre pile et de les utiliser pour configurer votre application, déployer des packages et des fichiers sur votre instance qui est listée dans votre modèle, et réagir aux mises à jours de la pile telles que les modifications de la configuration ou les mises à jour de votre application.
Les scripts suivants sont disponibles :
- cfn-get-metadata : récupère les métadonnées jointes à vos ressources dans le modèle.
- cfn-init : télécharge et installe les packages et les fichiers décrits dans votre modèle.
- cfn-signal : signale au flux de création de pile que votre application est lancée et prête à prendre du trafic.
- cfn-hup : un démon pour écouter les mises à jour de pile qui ont été initiées par le biais de la console AWS, les outils de ligne de commande ou directement via l'API et exécuter vos points d'accroche spécifiques à l'application en conséquence.
Vous pouvez utiliser les scripts CloudFormation seuls ou en les associant à CloudInit, une fonctionnalité disponible dans l’AMI Amazon Linux et certaines autres AMI Linux. Pour plus de détails sur l'amorçage d'applications et la mise à jour des configurations, consultez les ressources pour développeurs relatives à AWS CloudFormation.
Votre utilisation de ce service est soumise au Contrat client Amazon Web Services.