AWS CloudFormation

AWS CloudFormation donne aux développeurs et aux administrateurs de système une manière simple de créer et gérer un regroupement de ressources liées à AWS, de les provisionner et de les mettre à jour de manière ordonnée et prévisible.

Vous pouvez utiliser des modèles d'exemples AWS CloudFormation ou créer vos propres modèles pour décrire les ressources AWS et toute dépendance ou paramètre d'exécution associés pour démarrer votre application. Vous n'avez pas besoin de déterminer l'ordre dans lequel les services AWS doivent être mis en service ou de connaitre les subtilités du fonctionnement des dépendances. CloudFormation s'en occupe pour vous. Une fois déployées, vous pouvez modifier et mettre à jour les ressources AWS de manière contrôlée et prévisible, vous permettant de contrôler la version de votre infrastructures AWS de la même manière dont vous contrôlez la version de votre logiciel.

Vous pouvez déployer et mettre à jour un modèle et les regroupements de ressources qui y sont associés (nommé une pile) grâce à AWS Management Console, aux outils de ligne de commande CloudFormation ou aux API. CloudFormation est disponible sans frais supplémentaires et vous ne payez que les ressources AWS nécessaires à l'exécution de vos applications.

Inscription facile,
vous ne payez que ce que vous utilisez
Inscrivez-vous

Cette page contient les catégories d'informations suivantes. Cliquez pour aller en bas de page :

AWS CloudFormation – Fonctionnalité

Pour utiliser AWS CloudFormation, il vous suffit simplement :

  • S'inscrire à AWS CloudFormation. Vous serez automatiquement inscrit à tous les services pris en charge par AWS CloudFormation. Vous ne serez facturé que pour ce que vous utilisez. Une fois enregistré, vous pouvez commencer à utiliser AWS CloudFormation via AWS Management Console, les outils de la ligne de commande ou les API.
  • Créer un empilement CloudFormation pour mettre en service la collection de ressources nécessaires à votre application. Ceci peut être effectué en deux simples étapes : d'abord, sélectionnez le modèle que vous souhaitez utiliser dans l'onglet CloudFormation de AWS Management Console. AWS CloudFormation est livré avec des modèles d'exemple pour les applications open source les plus courantes que vous pouvez déployer immédiatement pour commencer. Nos modèles d'exemples illustrent la façon d'effectuer l'interconnexion et d'utiliser les multiples ressources AWS ensemble, en suivant les bonnes pratiques de redondance géographique, d'échelle et d'alarme. Vous pouvez également charger vos propres modèles personnalisés et les enregistrer dans Amazon Simple Storage Service (Amazon S3) ou sur votre disque dur local. Ensuite, déterminez si vous souhaitez personnaliser votre empilement en écrasant les paramètres de modèle (comme la base de données ou les noms d'utilisateurs de l'application, les mots de passe, les numéros de port, les types d'instance Amazon EC2, etc.) ou accepter simplement les valeurs par défaut fournies par l'auteur du modèle. Une fois ce processus terminé, AWS CloudFormation se charge de la mise en service des ressources AWS, en créant l'empilement pour vous.
  • Voir toutes les ressources contenues dans chacun de vos empilements sur AWS Management Console.
  • Créez des empilements supplémentaires (si besoin) en utilisant simplement les modèles existants que vous avez créés, en choisissant l'un de nos modèles d'exemples ou en créant un nouveau modèle. Dans la mesure où les modèles sont des fichiers texte qui peuvent être créés et gérés hors de CloudFormation, vous pouvez facilement les partager par e-mail, référentiels de contrôle de source ou par les services comme Amazon S3.
  • Effectue les modifications et les mises à jour de vos piles en cours d'exécution, vous permettant de réagir aux mises à jour de logiciel et modifications de configuration nécessaires pour gérer votre application tout au long de sa vie. Vous le faîtes en 2 étapes simples : Premièrement, modifiez votre modèle avec les modifications de configuration requises pour toutes les ressources dans la pile. Vous pouvez utilisez vos meilleures pratiques de contrôle de version et de gestion de modification pour vos modèles, vous permettant de gérer les modifications de la configuration de votre infrastructure AWS de la même manière que vous gérez les modifications du logiciel qui y est exécuté. Deuxièmement, soumettez le modèle mis à jour à AWS CloudFormation par le biais de AWS Management Console, les outils de ligne de commande ou l'API. AWS CloudFormation s'occupe du reste, effectuant les modifications de configuration sur votre pile de manière contrôlée et prévisible.

Éléments principaux du service

Prend en charge une vaste gamme de ressources AWS – AWS CloudFormation prend en charge de nombreuses ressources AWS, ce qui vous permet de construire une infrastructure AWS évolutive, fiable et hautement disponible pour les besoins de vos applications. Aujourd'hui AWS CloudFormation prend en charge :

  • Instances Amazon EC2
    (à la demande, ponctuelles et réservées)
  • Volumes Amazon Elastic Block Store (EBS)
  • Elastic Load Balancers
  • Adresses IP élastiques
  • Groupes de sécurité Amazon EC2
  • Groupes Auto Scaling
  • Instances Amazon Relational Database Service (RDS
  • Groupes de sécurité Amazon RDS
  • Clusters Amazon ElastiCache
  • Groupes de sécurité Amazon ElastiCache
  • Groupes de paramètres Amazon ElastiCache
  • AWS Elastic Beanstalk
  • Alarmes Amazon CloudWatch

  • Compartiments Amazon Simple Storage Service (S3)
  • Domaines Amazon Simple DB
  • Fils d'attente Amazon Simple Queue Service (SQS)
  • Topics Amazon Simple Notification Service (SNS)
  • Souscriptions Amazon SNS
  • Enregistrements Amazon Route 53 DNS
  • Distributions Amazon CloudFront et support multi-origine
  • Utilisateurs et groupes de AWS Identity and Access Management
  • Politiques de Gestion d'identité et d'accès AWS
  • Amazon Virtual Private Cloud (VPC), sous-réseaux, passerelles, tables de routage et ACL réseau
  • Tables Amazon DynamoDB


Facile à utiliser – CloudFormation facilite l'organisation d'une collection de ressources AWS que vous souhaitez déployer et vous laisse décrire toutes dépendances ou paramètres spéciaux qui peuvent passer lors de l'exécution. Vous n'avez pas besoin de déterminer l'ordre dans lequel les services AWS doivent être mis en service ou de connaitre les subtilités du fonctionnement des dépendances. CloudFormation s'en occupe pour vous. Vous pouvez utiliser l'un des nombreux modèles échantillon CloudFormation – soit verbatim ou pour commencer – créer le votre.

AWS CloudFormation est aujourd'hui livré avec les modèles d'exemples suivants prêts l'emploi :

  • WordPress (blog)
  • Tracks (suivi de projet)
  • Gollum (wiki utilisé par GitHub)
  • Drupal (gestion de contenu)

  • Joomla (gestion de contenu)
  • Insoshi (applications sociales)
  • Redmine (gestion de projet)
  • De nombreux modèles individuels montrent l'utilisation des ressources et des fonctionnalités AWS individuelles.


Pas besoin de réinventer la roue – Un modèle peut être utilisé plusieurs fois pour créer des copies identiques du même empilement (ou pour l'utiliser comme fondation pour démarrer un nouvel empilement). Vous pouvez capturer et contrôler des variations d'infrastructure spécifiques à la région comme les AMI Amazon EC2, ainsi que Amazon Elastic Block Store (EBS) et les noms d'instantanés Amazon RDS.

Transparent et ouvert – Les modèles sont simplement constitués de textes au format JSON qui peuvent être placés sous vos mécanismes de contrôle de source normaux, stockés dans des emplacements publics ou privés comme Amazon S3 et échangés par email. AWS CloudFormation vous permet « d'ouvrir le capot » pour voir exactement quelles ressources AWS sont utilisées pour créer un empilement. Vous conservez un contrôle total et vous pouvez modifier n'importe quelle ressource AWS créée dans un empilement.

Déclaratif et flexible – Pour créer l'infrastructure que vous voulez, vous énumérez de quelles ressources AWS, valeurs et interconnexions de configuration vous avez besoin et vous laisser AWS CloudFormation se charger du reste avec quelques clics simples dans la AWS Management Console, par les outils de ligne de commande ou en appelant les API. Vous n'avez pas besoin de vous souvenir des détails de la création et de l'interconnexion des ressources AWS respectives par le biais de leurs API de service, AWS CloudFormation s'en charge pour vous. Vous n'avez pas non plus besoin de composer un modèle à partir de rien si vous souhaitez démarrer avec l'un des nombreux modèles d'exemples livrés avec AWS CloudFormation.

Personnalisé par les paramètres – Les paramètres vous permettent de personnaliser les aspects de votre modèle lors de l'exécution, lors de la construction de l'empilement. Par exemple, la taille de la base de données RDS, les types d'instance EC2, la base de données et le numéro de port du serveur Web peuvent être passés à AWS CloudFormation lors de la création de la pile. Vous pouvez également utiliser un modèle paramétré pour créer des empilements multiples qui peuvent différer de manière contrôlée. Par exemple, vos types d'instance Amazon EC2, les paramètres dupliqués de seuils d'alarme Amazon CloudWatch et de Service Database Amazon Relational (Amazon RDS) sont peut-être différents entre les régions AWS si vous recevez plus de trafic de clients des USA que de l'Europe. Vous pouvez utiliser les paramètres de modèle pour définir les paramètres et les seuils pour chaque région séparément et être toujours sûr que l'application est déployée de manière cohérente dans toutes les régions.

Intégration prête – AWS CloudFormation publie les états d'avancement par AWS Simple Notification Service (SNS). Cela vous permet de suivre les avancements de création d'empilement et de suppression par email et de s'intégrer à d'autres processus via un programme.

Pas de frais supplémentaires – AWS CloudFormation est disponible sans frais supplémentaires. Vous serez facturé au tarif normal pour les ressources AWS créées par AWS CloudFormation et utilisées par votre application.


Tarification

Il n'y a pas frais supplémentaires pour AWS CloudFormation. Vous payez pour les ressources AWS (par ex. les instances EC2, Les Elastic Load Balancers, etc.) créées en utilisant AWS CloudFormation de la même manière que si vous les créez manuellement.

Afin que vous n'ayez pas à vous inscrire pour chaque service pris en charge par AWS CloudFormation, nous vous inscrivons automatiquement pour ces services lorsque vous vous inscrivez pour AWS CloudFormation. Ceci facilite l'utilisation des modèles d'exemples AWS CloudFormation sans avoir à vérifier manuellement que les services AWS respectifs sont activés pour vous. Avec tous les services AWS, vous ne payez que pour ce que vous utilisez, quand vous l'utilisez ; il n'y a aucun frais minimum et aucun engagement préliminaire requis.


Description détaillée

Créer des modèles AWS CloudFormation

Un modèle est un fichier de texte au format JSON (Notation d'objet Javascript) qui décrit l'infrastructure AWS nécessaire à l'exécution d'une application ou d'un service ainsi que l'inter-connexion entre eux. Les modèles capturent de manière concise les relations de ressources, comme les instances EC2 qui doivent être associées à un programme d'équilibrage de charge extensible, ou le fait qu'un volume EBS doit être dans la même zone de disponibilité EC2 que l'instance à laquelle il est relié. Le modèle peut être paramétré pour permettre qu'un seul modèle soit utilisé pour le déploiement de plusieurs infrastructures qui ont des valeurs de configuration différentes, comme le nombre d'instances à démarrer pour l'application. Les modèles donnent également les propriétés de sortie qui peuvent être utilisées pour communiquer facilement à l'utilisateur la configuration ou les résultats du déploiement du modèle. Par exemple, lorsqu'il est instancié, un modèle peut fournir l'URL du point terminaison du programme d'équilibrage de charge extensible que le client doit utiliser pour connecter l'application nouvellement instanciée. Toutes les ressources AWS dans un modèle sont identifiées en utilisant des noms logiques, ce qui permet la création de multiples empilements à partir d'un modèle sans crainte de collision de nom entre les ressources AWS.

Vous fournissez le modèle à l'opération CreateStack dans l'AWS Console, l'outil de ligne de commande ou l'API. Il n'est pas nécessaire d'inscrire préalablement le modèle auprès de AWS CloudFormation. AWS CloudFormation conserve une copie du modèle d'empilement pour que vous puissiez utiliser AWS Management Console, les outils de ligne de commande ou les API pour regarder les configurations précise des ressources qui ont été appliquées pendant la création d'empilement.

Un modèle dispose de la structure JSON haut niveau suivante :

{   
    "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-75g0061f"
            }
        }
    },
    "Outputs" : {
        "InstanceId" : {
             "Description" : "The InstanceId of the newly created EC2 instance",
             "Value" : { "Ref" : "Ec2Instance" }
         }
    },
    "AWSTemplateFormatVersion" : "2010-09-09"
} 

Utiliser un modèle AWS CloudFormation pour créer et gérer une pile

La collection de ressources issue de l'initiation d'un modèle s'appelle un empilement. Un empilement est créé en fournissant un modèle ainsi que tout paramètre requis pour le service AWS CloudFormation. Basé sur le modèle, le service détermine ce dont les ressources AWS ont besoin pour la création et dans quel ordre. L'ordre est déterminé par les dépendances spécifiées entre les ressources déclarées dans le modèle. Certaines de ces dépendances sont implicites, afin d'associer un volume EBS à une instance EC2, le nom du volume EBS doit être passé à l'instance. Pour que cela se produise, le volume EBS doit d'abord être créé pour qu'un nom ou un identifiant lui soit donné. Dans d'autres cas, la dépendance est explicite. Par exemple, si une application est déployée en utilisant un groupe Auto Scaling et qu'elle a besoin d'accéder à une instance de Service Amazon Reational Database, l'instance de base de donnée doit être créée avant que les instances EC2 ne soient créées. Dans ce cas, l'auteur du modèle peut définir une dépendance entre les ressources en s'assurant que l'une est créée avant l'autre.

Les piles sont créées, mises à jour et supprimées en utilisant le service AWS CloudFormation. Pendant la création d'empilements, AWS CloudFormation enregistre le mappage à partir du nom logique donné dans le modèle (par ex. "monServeur") au nom effectif de la ressource qui est initiée (par ex. nom d'instance EC2 ‘i-19d3ac161’). L'état de création d'empilement et le mappage de nom de ressource sont disponibles grâce à un simple API. De plus, AWS CloudFormation étiquette les ressources EC2, comme les instances et les volumes EBS, avec le même nom d'empilement.

Les piles sont mises à jour en fournissant un modèle qui contient la configuration désirée de toutes les ressources dans votre 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 de perpétuer ces modifications au travers des différentes ressources dans votre pile. Dans beaucoup de cas, les modifications seront faites sans affecter votre application en exécution, toutefois, si une modification ne peut pas être réalisée dynamiquement (telle que la mise à jour de l'AMI sur une instance EC2), AWS CloudFormation créera une nouvelle ressource et la re-câblera dans la pile, effaçant l'ancienne ressource une fois que le service est sûr que la mise à jour est réussie.

Une pile sera soit créée ou mise à jour dans son intégralité, soit rétablies si elle ne peut pas être instantiée ou modifiée dans son intégralité. Pendant la création de pile, à des fins de débogage, l'opération de rétablissement peut être désactivée et initiée manuellement plus tard.

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 depuis l'intérieur de AWS Management Console en suivant quelques étapes simples. AWS CloudFormation fournit un ensemble simple d'API faciles à utiliser et extrêmement flexibles. Pour une liste complète des API AWS CloudFormation disponibles, veuillez consulter le manuel AWS CloudFormation API Reference Guide. Voici une présentation de certaines des API les plus couramment utilisées et de leurs fonctionnalités :

  • CreateStack : Démarrer la création d'un nouvel empilement. Les paramètres d'entrée vers l'appel incluent le nom de l'empilement et un nom de fichier (ou URL S3) pour le modèle source. Si le processus de création de la pile se termine correctement, la pile sera en état CREATE_COMPLETE. Si la création échoue, AWS CloudFormation va supprimer les ressources créées précédemment, à moins que l'utilisateur n'ait spécifié un indicateur pour conserver ces éléments pour le débogage.
  • ListStacks : Liste toutes les piles dans votre compte. Ceci peut être utilisé pour voir l'ensemble de piles et leur condition actuelle indiquant s'il y a une mise à jour ou une opération créer en cours ou si la pile est prête.
  • ListStackResources : Liste tous les noms de ressources et les identifiants AWS qui ont été créés lors de la création d'une pile. Celui-ci peut être utilisé pour voir les ressources créées par un empilement ou bien il peut être utilisé par une application consciente de AWS CloudFormation pour comprendre l'environnement dans lequel elle est déployée.
  • DescribeStackEvents : Liste toutes les opérations générées par AWS CloudFormation et les évènements pour un empilement qui vous permettent de voir comment la création ou la suppression progresse.
  • UpdateStack : Lance la procédure de mise à jour pour une pile existante. Les paramètres d'entrée vers l'appel incluent le nom de la pile et un nom de fichier (ou URL S3) pour le modèle mis à jour. Si le processus de mise à jour de la pile se termine correctement, la pile sera en état UPDATE_COMPLETE. Si la mise à jour de la pile échoue, AWS CloudFormation annulera toutes les modifications de ressources qui ont été faites afin que la pile revienne à l'état décrit dans le modèle original.

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. En plus de l'état qui vous est indiqué, cela permet aussi aux autres programmes de devenir conscients des évènements ayant lieu dans CloudFormation et de répondre ou même de participer au processus de configuration de l'empilement.

Travailler avec des ressources AWS

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 « monVolume »et son type est « AWS::EC2::Volume » Les propriétés vous sembleront très 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"
    }
} 

Amorcer les applications et gérer les mises à jour

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 l'API et exécuter vos points d'accueil spécifiques à l'application pour réagir à ces changements.

Les scripts CloudFormation peuvent être utilisés indépendamment ou en conjonction avec CloudInit, une fonction disponible sur l'AMI Amazon Linux et d'autres AMI Linux. Pour plus de détails sur l'amorçage d'application et la mise à jour de configuration, consultez les documents techniques de AWS CloudFormation

Documentation

La meilleure manière de démarrer avec AWS CloudFormation est de consulter le guide de démarrage qui est inclus dans notre documentation technique. Dans quelques minutes, vous serez capable de déployer l'un des modèles d'exemple et de commencer à créer vos propres configurations d'infrastructure.


Utilisation prévue et restrictions

Votre utilisation de ce service est soumise au Contrat client Amazon Web Services.

©2013, Amazon Web Services, Inc. or its affiliates. Tous droits réservés.