

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.

# Création de votre première pile
<a name="gettingstarted.walkthrough"></a>

Cette rubrique vous explique comment créer votre première CloudFormation pile à l'aide du AWS Management Console. En suivant ce didacticiel, vous apprendrez à mettre en service des AWS ressources de base, à surveiller les événements liés à la pile et à générer des résultats.

Dans cet exemple, le CloudFormation modèle est écrit en YAML. YAML est un format lisible par l’homme qui est largement utilisé pour définir l’infrastructure en tant que code. Au fur et à mesure que vous en apprendrez plus CloudFormation, vous pourrez également rencontrer d'autres modèles au format JSON, mais pour ce didacticiel, YAML a été choisi pour sa lisibilité.

**Note**  
CloudFormation est gratuit, mais les ressources Amazon EC2 et Amazon S3 que vous créez vous seront facturées. Toutefois, si vous êtes nouveau dans ce AWS domaine, vous pouvez profiter du [niveau gratuit](https://aws.amazon.com/free/) pour minimiser ou éliminer les coûts au cours de ce processus d'apprentissage.

**Topics**
+ [Conditions préalables](#getting-started-prerequisites)
+ [Création d'une CloudFormation pile avec la console](#getting-started-create-stack)
+ [Surveiller la création de la pile](#getting-started-monitor-stack-creation)
+ [Tester le service Web](#getting-started-test-web-server)
+ [Résolution des problèmes](#getting-started-troubleshooting)
+ [Nettoyage](#getting-started-clean-up)
+ [Étapes suivantes](#getting-started-next-steps)

## Conditions préalables
<a name="getting-started-prerequisites"></a>
+ Vous devez avoir accès Compte AWS à un utilisateur ou à un rôle IAM autorisé à utiliser Amazon EC2, CloudFormation Amazon S3 et/ou un accès utilisateur administratif.
+ Vous devez disposer d’un cloud privé virtuel (VPC) ayant accès à Internet. Ce modèle de procédure pas-à-pas nécessite un VPC par défaut, qui est automatiquement fourni avec les Comptes AWS plus récentes. Si vous ne disposez pas d’un VPC par défaut ou si celui-ci a été supprimé, consultez la section Dépannage de cette rubrique pour trouver d’autres solutions.

## Création d'une CloudFormation pile avec la console
<a name="getting-started-create-stack"></a>

**Pour créer une CloudFormation pile Hello World avec la console**

1. Ouvrez la [CloudFormation console](https://console.aws.amazon.com/cloudformation/).

1. Sélectionnez **Créer une pile**.

1. Sur la page **Créer une pile**, sélectionnez **Créer à partir d’Infrastructure Composer**, puis Créer dans **Infrastructure Composer**. Cela vous amène à Infrastructure Composer en mode CloudFormation console où vous pouvez télécharger et valider l'exemple de modèle.

1. Pour télécharger et valider le modèle d’exemple, procédez comme suit :

   1. Sélectionnez **Modèles**. Copiez et collez ensuite le CloudFormation modèle suivant dans l'éditeur de modèles :

      ```
      AWSTemplateFormatVersion: 2010-09-09
      Description: CloudFormation Template for WebServer with Security Group and EC2 Instance
      
      Parameters:
        LatestAmiId:
          Description: The latest Amazon Linux 2 AMI from the Parameter Store
          Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>
          Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2'
      
        InstanceType:
          Description: WebServer EC2 instance type
          Type: String
          Default: t2.micro
          AllowedValues:
            - t3.micro
            - t2.micro
          ConstraintDescription: must be a valid EC2 instance type.
          
        MyIP:
          Description: Your IP address in CIDR format (e.g. 203.0.113.1/32).
          Type: String
          MinLength: '9'
          MaxLength: '18'
          Default: 0.0.0.0/0
          AllowedPattern: '^(\d{1,3}\.){3}\d{1,3}\/\d{1,2}$'
          ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x.
      
      Resources:
        WebServerSecurityGroup:
          Type: AWS::EC2::SecurityGroup
          Properties:
            GroupDescription: Allow HTTP access via my IP address
            SecurityGroupIngress:
              - IpProtocol: tcp
                FromPort: 80
                ToPort: 80
                CidrIp: !Ref MyIP
      
        WebServer:
          Type: AWS::EC2::Instance
          Properties:
            ImageId: !Ref LatestAmiId
            InstanceType: !Ref InstanceType
            SecurityGroupIds:
              - !Ref WebServerSecurityGroup
            UserData: !Base64 |
              #!/bin/bash
              yum update -y
              yum install -y httpd
              systemctl start httpd
              systemctl enable httpd
              echo "<html><body><h1>Hello World!</h1></body></html>" > /var/www/html/index.html
      
      Outputs:
        WebsiteURL:
          Value: !Join
            - ''
            - - http://
              - !GetAtt WebServer.PublicDnsName
          Description: Website URL
      ```

      Avant de passer à l'étape suivante, prenons un moment pour examiner le modèle et comprendre certains CloudFormation concepts clés.
      + Cette section **`Parameters`** déclare les valeurs qui peuvent être transmises au modèle lorsque vous créez la pile. Les ressources spécifiées ultérieurement dans le modèle font référence à ces valeurs et utilisent les données. Les paramètres constituent un moyen efficace de spécifier les informations que vous ne souhaitez pas stocker dans le modèle lui-même. Ils permettent également de spécifier des informations qui peuvent être propres à l’application ou à la configuration spécifique que vous déployez.
      + Le modèle définit les paramètres suivants :
        + **`LatestAmiId`** : récupère le dernier ID AMI Amazon Linux 2 dans le Parameter Store AWS Systems Manager .
        + **`InstanceType`** : permet de sélectionner le type d’instance EC2 (par défaut :`t2.micro`, autorisé : `t3.micro`, `t2.micro`). 
        + **`MyIP`** : spécifie la plage d’adresses IP pour l’accès HTTP (par défaut : 0.0.0.0/0, permettant l’accès à partir de n’importe quelle adresse IP).
      + La **`Resources`**section contient les définitions des AWS ressources que vous souhaitez créer avec le modèle. Les déclarations de ressource sont un moyen efficace de spécifier tous ces paramètres de configuration simultanément. Lorsque vous incluez des déclarations de ressources dans un modèle, vous pouvez créer et configurer toutes les ressources déclarées en utilisant ce modèle pour créer une pile. Vous pouvez également créer de nouvelles piles à partir du même modèle pour lancer des configurations identiques de ressources.
      + Ce modèle crée les ressources suivantes :
        + **`WebServerSecurityGroup`** : un groupe de sécurité EC2 qui autorise le trafic HTTP entrant sur le port 80 à partir de la plage d’adresses IP spécifiée.
        + **`WebServer`** : une instance EC2 avec la configuration suivante :
          + Utilise la dernière AMI Amazon Linux 2
          + Applique le type d’instance sélectionné
          + Ajoute le `WebServerSecurityGroup` à la propriété `SecurityGroupIds`
          + Inclut un script de données utilisateur pour installer le serveur HTTP Apache
      + Un nom logique est spécifié au début de chaque déclaration de ressource et de paramètre. Par exemple, `WebServerSecurityGroup` est le nom logique attribué à la ressource du groupe de sécurité EC2. La fonction `Ref` est ensuite utilisée pour référencer les ressources et les paramètres par leur nom logique dans d’autres parties du modèle. Lorsqu’une ressource fait référence à une autre ressource, cela crée une dépendance entre elles.
      + La section **`Outputs`** définit les valeurs personnalisées qui sont renvoyées après la création de la pile. Vous pouvez utiliser les valeurs de sortie pour renvoyer des informations provenant des ressources de la pile, telles que les identificateurs de ressources ou URLs.
      + Le modèle définit une sortie :
        + **`WebsiteURL`** : l’URL du serveur Web déployé, construite à l’aide du nom DNS public de l’instance EC2. La fonction `Join` permet de combiner le fixe `http://` avec la variable `PublicDnsName` en une seule chaîne, ce qui facilite la sortie de l’URL complète du serveur Web.

   1. Choisissez **Valider** pour vous assurer que le code YAML est valide avant de télécharger le modèle.

   1. Ensuite, sélectionnez **Créer un modèle** pour créer le modèle et l’ajouter à un compartiment S3.

   1. Dans la boîte de dialogue qui s’ouvre, notez le nom du compartiment S3 afin de pouvoir le supprimer ultérieurement. Choisissez ensuite **Confirmer et passez à CloudFormation**. Cela vous amène à la CloudFormation console où le chemin S3 vers votre modèle est désormais spécifié.

1. Sur la page **Créer une pile** choisissez **Suivant**.

1. Sur la page **Spécifier les détails** de la pile, saisissez un nom dans le champ **Nom de la pile**. Le nom de la pile ne peut pas contenir d’espaces. Pour cet exemple, utilisez **MyTestStack**.

1. Sous **Paramètres**, spécifiez les valeurs des paramètres comme suit :
   + **LatestAmiId**: Ce paramètre est défini par défaut sur la dernière AMI Amazon Linux 2.
   + **InstanceType**: Choisissez **t2.micro ou **t3.micro**** pour le type d'instance EC2.
**Note**  
Si vous êtes nouveau dans ce AWS domaine, vous pouvez utiliser le niveau gratuit pour lancer et utiliser une `t2.micro` instance gratuitement pendant 12 mois (dans les régions où elle n'`t2.micro`est pas disponible, vous pouvez utiliser une `t3.micro` instance dans le cadre du niveau gratuit).
   + **MyIP** : Spécifiez votre adresse IP publique réelle à l’aide d’un suffixe `/32`. Le suffixe `/32` est utilisé dans la notation CIDR pour spécifier qu’une seule adresse IP est autorisée. Cela signifie essentiellement autoriser le trafic vers et depuis cette adresse IP spécifique, et aucune autre.

1. Sélectionnez deux fois **Suivant** pour accéder à la page **Vérifier et créer**. Pour ce didacticiel, vous pouvez laisser les valeurs par défaut de la page **Configurer les options de pile** telles quelles.

1. Vérifiez les informations de la pile. Lorsque vous êtes satisfait de vos paramètres, choisissez **Submit (Envoyer)**.

## Surveiller la création de la pile
<a name="getting-started-monitor-stack-creation"></a>

Après avoir choisi **Soumettre**, CloudFormation commence à créer les ressources spécifiées dans le modèle. Votre nouvelle pile apparaît dans la liste en haut de la **CloudFormation**console. **MyTestStack** Son statut devrait être `CREATE_IN_PROGRESS`. Pour voir l’état détaillé d’une pile, consultez ses événements.

**Pour afficher les événements de la pile**

1. Sur la CloudFormation console, choisissez la pile **MyTestStack** dans la liste.

1. Dans le volet de détails de la pile, choisissez l’onglet **Events (Événements)**.

   La console actualise automatiquement la liste en y ajoutant les événements les plus récents toutes les 60 secondes.

L’onglet **Événements** affiche chaque étape majeure de création de la pile, triée en fonction de l’heure de chaque événement, avec les derniers événements en tête de liste.

Le premier événement (en bas de la liste d’événements) correspond au début du processus de création de la pile :

`2024-12-23 18:54 UTC-7 MyTestStack CREATE_IN_PROGRESS User initiated`

Ensuite viennent les événements qui marquent le début et la fin de la création de chaque ressource. Par exemple, la création de l'instance EC2 génère les entrées suivantes :

`2024-12-23 18:59 UTC-7 WebServer CREATE_COMPLETE`

`2024-12-23 18:54 UTC-7 WebServer CREATE_IN_PROGRESS Resource creation initiated`

L'`CREATE_IN_PROGRESS`événement est enregistré lorsqu'il CloudFormation est indiqué qu'il a commencé à créer la ressource. L'événement `CREATE_COMPLETE` est enregistré lorsque la ressource a été créée avec succès.

Une CloudFormation fois la pile créée avec succès, vous verrez l'événement suivant en haut de l'onglet **Événements** :

`2024-12-23 19:17 UTC-7 MyTestStack CREATE_COMPLETE`

S'il n'est pas CloudFormation possible de créer une ressource, il signale un `CREATE_FAILED` événement et, par défaut, annule la pile et supprime toutes les ressources créées. La colonne **Motif du statut** affiche le problème qui a provoqué l'échec.

Une fois la pile créée, vous pouvez accéder à l’onglet **Ressources** pour afficher l’instance EC2 et le groupe de sécurité que vous avez créés.

## Tester le service Web
<a name="getting-started-test-web-server"></a>

Une fois la pile créée avec succès, accédez à l'onglet **Sorties** de la CloudFormation console. Recherchez le champ **WebsiteURL**. Cela contiendra l’URL publique de votre instance EC2.

Ouvrez un navigateur et accédez à l’URL répertoriée sous **WebsiteURL.** Vous devriez voir un message "Hello World\$1" simple s’afficher dans le navigateur.

Cela confirme que votre instance EC2 exécute le serveur HTTP Apache et diffuse une page Web de base.

## Résolution des problèmes
<a name="getting-started-troubleshooting"></a>

Si vous rencontrez un retour en arrière lors de la création de la pile, cela peut être dû à l’absence d’un VPC. Voici comment résoudre ce problème.

### Aucun VPC par défaut n’est disponible
<a name="getting-started-troubleshooting-no-default-vpc"></a>

Le modèle présenté dans cette procédure pas à pas nécessite un VPC par défaut. Si la création de votre pile échoue en raison d’erreurs de disponibilité du VPC ou du sous-réseau, il se peut que vous n’ayez pas de VPC par défaut dans votre compte. Vous avez les options suivantes :
+ **Créer un nouveau VPC par défaut** : vous pouvez créer un nouveau VPC par défaut via la console Amazon VPC. Pour obtenir des instructions, consultez la section [Créer un VPC](https://docs.aws.amazon.com/vpc/latest/userguide/work-with-default-vpc.html#create-default-vpc) par défaut dans le *Guide de l’utilisateur Amazon VPC*.
+ **Modifier le modèle pour spécifier un sous-réseau** — Si vous avez un VPC autre que celui par défaut, vous pouvez modifier le modèle pour spécifier explicitement le VPC et le sous-réseau. IDs Ajoutez le paramètre suivant au modèle :

  ```
    SubnetId:
      Description: The subnet ID to launch the instance into
      Type: AWS::EC2::Subnet::Id
  ```

  Ensuite, mettez à jour la ressource `WebServer` pour inclure l’ID du sous-réseau :

  ```
    WebServer:
      Type: AWS::EC2::Instance
      Properties:
        ImageId: !Ref LatestAmiId
        InstanceType: !Ref InstanceType
        SecurityGroupIds:
          - !Ref WebServerSecurityGroup
        SubnetId: !Ref SubnetId
        UserData: !Base64 |
          #!/bin/bash
          yum update -y
          yum install -y httpd
          systemctl start httpd
          systemctl enable httpd
          echo "<html><body><h1>Hello World!</h1></body></html>" > /var/www/html/index.html
  ```

  Lors de la création de la pile, vous devez spécifier un sous-réseau ayant accès à Internet pour que le serveur Web soit accessible.

## Nettoyage
<a name="getting-started-clean-up"></a>

Pour vous assurer que vous n’êtes pas facturé pour des services indésirables, supprimez la pile et ses ressources. Vous pouvez également supprimer le compartiment S3 qui stocke le modèle de la pile.

**Pour supprimer la pile et ses ressources**

1. Ouvrez la [CloudFormation console](https://console.aws.amazon.com/cloudformation/).

1. Sur la page **Piles**, sélectionnez l’option à côté du nom de la pile que vous avez créée (**MyTestStack**), puis choisissez **Supprimer**.

1. Lorsque vous êtes invité à confirmer l’opération, choisissez **Supprimer**.

1. Surveillez la progression du processus de suppression de la pile dans l’onglet **Événement**. L'état de **MyTestStack** est remplacé par `DELETE_IN_PROGRESS`. Lorsque la suppression de la pile est CloudFormation terminée, elle supprime la pile de la liste.

Si vous avez terminé d’utiliser le modèle d’exemple et que vous n’avez plus besoin de votre compartiment Amazon S3, supprimez-le. Avant de pouvoir supprimer un compartiment, vous devez d’abord supprimer son contenu. Vider un compartiment supprime tous les objets qu’il contient.

**Pour vider et supprimer le compartiment Amazon S3**

1. Ouvrez la [console Amazon S3](https://console.aws.amazon.com/s3/).

1. Dans le volet de navigation situé sur le côté gauche de la console, choisissez **Compartiments**.

1. Dans la liste **Compartiments**, sélectionnez l’option à côté du nom du compartiment que vous avez créé pour ce didacticiel, puis choisissez **Vider**.

1. Sur la page **Vider le compartiment**, confirmez que vous souhaitez vider le compartiment en saisissant **permanently delete** dans le champ de texte, puis choisissez **Vider**.

1. Surveillez la progression du processus de vidage du compartiment sur la page **Vider le compartiment : état**. 

1. Pour revenir à votre liste de compartiments, choisissez **Quitter**.

1. Sélectionnez l’option en regard du nom du compartiment, puis choisissez **Supprimer**.

1. Lorsque vous êtes invité à confirmer, saisissez le nom du compartiment, puis sélectionnez **Supprimer le compartiment**.

1. Surveillez la progression du processus de suppression des compartiments à partir de la liste **Compartiments**. Lorsque Amazon S3 a terminé la suppression du compartiment, il le supprime de la liste.

## Étapes suivantes
<a name="getting-started-next-steps"></a>

Félicitations \$1 Vous avez créé une pile avec succès, surveillé ses créations et utilisé ses résultats.

Pour continuer à apprendre :
+ Apprenez-en davantage sur les modèles afin de pouvoir créer vos propres modèles. Pour de plus amples informations, veuillez consulter [Utilisation de CloudFormation modèles](template-guide.md).
+ Essayez l’atelier [Premiers pas avec CloudFormation](https://catalog.us-east-1.prod.workshops.aws/workshops/df7f72cf-4f10-4664-acb6-b30dc8d4bcf0/en-US) pour vous exercer davantage à la création de modèles.
+ Pour une version abrégée de [Getting Started with CloudFormation](https://catalog.us-east-1.prod.workshops.aws/workshops/df7f72cf-4f10-4664-acb6-b30dc8d4bcf0/en-US), voir[Déploiement d’applications sur Amazon EC2](deploying.applications.md). Cette rubrique décrit le même scénario d'utilisation d'un script CloudFormation d'assistance pour démarrer une instance Amazon EC2. `cfn-init`