

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.

# Choisissez comment gérer les défaillances lors de l’approvisionnement des ressources
<a name="stack-failure-options"></a>

Si votre opération de stack échoue, vous n’avez pas à annuler les ressources déjà correctement provisionnées et à recommencer depuis le début à chaque fois. Au lieu de cela, vous pouvez dépanner les ressources dans un état `CREATE_FAILED` ou `UPDATE_FAILED`, puis reprendre le provisionnement à partir du point où le problème s’est produit. 

Pour ce faire, vous devez activer l’option Conserver les ressources correctement provisionnées. Cette option est disponible pour tous les déploiements de pile et les opérations d’ensembles de modifications.
+ Pour la création de piles, si vous choisissez l'option **Conserver les ressources correctement provisionnées**, CloudFormation préserve l'état des ressources créées avec succès et laisse les ressources défaillantes dans un état d'échec jusqu'à ce que la prochaine opération de mise à jour soit effectuée.
+ Lors des opérations de mise à jour et de modification, choisir **Préserver les ressources provisionnées** avec succès permet de conserver l’état des ressources qui ont été provisionnées avec succès tout en rétablissant les ressources qui ont échoué à leur dernier état stable connu. Les ressources en échec se trouveront à l'état `UPDATE_FAILED`. Les ressources sans dernier état stable connu seront supprimées lors de la prochaine opération de pile.

**Topics**
+ [Présentation des options d’échec de pile](#stack-failure-options-overview)
+ [Conditions requises pour suspendre la restauration de la pile](#stack-failure-options-conditions)
+ [Préserver les ressources correctement allouées (console)](#stack-failure-options-console)
+ [Préserver les ressources correctement allouées (AWS CLI)](#stack-failure-options-cli)

## Présentation des options d’échec de pile
<a name="stack-failure-options-overview"></a>

Avant d'exécuter une opération depuis la CloudFormation console, l'API ou AWS CLI, spécifiez le comportement en cas de défaillance des ressources provisionnées. Passez ensuite au processus de déploiement de vos ressources sans aucune autre modification. En cas de défaillance opérationnelle, CloudFormation s'arrête à la première défaillance de chaque chemin de provisionnement indépendant. CloudFormation identifie les dépendances entre les ressources afin de paralléliser les actions de provisionnement indépendantes. Il procède ensuite à l'allocation des ressources sur chaque chemin d'allocation indépendant jusqu'à ce qu'il rencontre un échec. La défaillance d'un chemin n'affecte pas les autres chemins de provisionnement. CloudFormation continuera à fournir les ressources jusqu'à leur achèvement ou s'arrêtera en cas de panne différente.

Corrigez les éventuels problèmes pour poursuivre le processus de déploiement. CloudFormation effectue les mises à jour nécessaires avant de réessayer des actions de provisionnement sur des ressources qui n'ont pas pu être correctement provisionnées plus tôt. Vous résolvez les problèmes en soumettant les opérations **Retry** (Réessayer), **Update** (Mettre à jour) ou **Roll back** (Restaurer). Par exemple, si vous allouez une instance Amazon EC2 et que l'instance EC2 échoue lors d'une opération de création, vous pouvez rechercher l'erreur, plutôt que de restaurer immédiatement la ressource ayant échoué. Vous pouvez passer en revue les contrôles d'état du système et les contrôles d'état des instances, puis sélectionner l'opération **Retry** (Réessayer) une fois que les problèmes sont résolus.

Lorsqu’une opération de pile échoue et que vous avez spécifié **Preserve successfully provisioned resources** (Préserver les ressources correctement allouées) à partir du menu **Stack failure options** (Options d’échec de pile), vous pouvez sélectionner les options suivantes.
+ **Retry** (Réessayer) : relance l’opération d’allocation sur les ressources en échec et continue d’allouer le modèle jusqu’à la fin de l’opération de pile ou jusqu’à l’échec suivant. Sélectionnez cette option si la ressource n'a pas pu être provisionnée en raison d'un problème ne nécessitant pas de modification du modèle, tel qu'une autorisation Gestion des identités et des accès AWS (IAM).
+ **Update** (Mettre à jour) : les ressources qui ont été allouées sont mises à jour lors des mises à jour des modèles. Les ressources qui n'ont pas pu être créées ou mises à jour seront relancées. Sélectionnez cette option si la ressource n'a pas pu être allouée en raison d'erreurs de modèle et si vous avez modifié le modèle. Lorsque vous mettez à jour une pile qui se trouve à l’état `FAILED`, vous devez sélectionner **Preserve successfully provisioned resources** (Préserver les ressources correctement allouées) pour **Stack failure options** (Options d’échec de pile) afin de poursuivre la mise à jour de votre pile.
+ **Annulation** : CloudFormation ramène la pile au dernier état stable connu.

## Conditions requises pour suspendre la restauration de la pile
<a name="stack-failure-options-conditions"></a>

Pour éviter CloudFormation de revenir en arrière et de supprimer automatiquement les ressources créées avec succès, les conditions suivantes doivent être remplies.

1. Lorsque vous créez ou mettez à jour la pile, vous devez choisir l’option **Préserver les ressources correctement provisionnées**. Cela indique de CloudFormation ne pas supprimer les ressources créées avec succès, même si l'opération globale de pile échoue.

1. L’opération de pile doit avoir échoué, ce qui signifie que l’état de la pile est soit `CREATE_FAILED` soit `UPDATE_FAILED`.

**Note**  
Les types de mise à jour immuables ne sont pas pris en charge.

## Préserver les ressources correctement allouées (console)
<a name="stack-failure-options-console"></a>

------
#### [ Create stack ]

**Pour préserver les ressources correctement allouées lors d’une opération de création de pile**

1. Connectez-vous à la CloudFormation console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. Depuis la page **CloudFormation**, choisissez **Piles**, puis **Créer une pile avec de nouvelles ressources (standard)**.

1. Pour la **Condition préalable – Préparer le modèle**, sélectionnez **Choisir un modèle existant**.

1. Sous **Spécifier le modèle**, choisissez soit de spécifier l’URL du compartiment S3 qui contient votre modèle de pile, soit de charger un fichier de modèle de pile. Ensuite, choisissez **Suivant**.

1. Sur la page **Spécifier les détails de la pile**, saisissez un nom pour la pile dans la zone **Stack name** (Nom de la pile).

1. Dans la section **Paramètres**, spécifiez les paramètres définis dans votre modèle de pile.

   Vous pouvez utiliser ou modifier n'importe quel paramètre contenant des valeurs par défaut.

1. Lorsque vous êtes satisfait de vos paramètres, choisissez **Next** (Suivant).

1. Sur la page **Configurer les options de la pile**, vous pouvez définir des options supplémentaires pour votre pile.

1. Pour **Stack failure options** (Options d’échec de pile), sélectionnez **Preserve successfully provisioned resources** (Préserver les ressources correctement allouées).

1. Lorsque vous êtes satisfait de vos options de pile, choisissez **Next** (Suivant).

1. Passez en revue votre pile sur la page **Révision** et sélectionnez **Create stack** (Créer une pile).

*Résultats* : les ressources qui n’ont pas pu être créées font passer l’état de la pile à `CREATE_FAILED` pour empêcher la restauration de la pile lorsque l’opération de pile échoue. Les ressources qui sont correctement allouées se trouvent à l'état `CREATE_COMPLETE`. Vous pouvez surveiller la pile dans l’onglet **Stack events** (Événements de la pile).

------
#### [ Update stack ]

**Pour préserver les ressources correctement allouées lors d’une opération de mise à jour de pile**

1. Connectez-vous à la CloudFormation console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. Sélectionnez la pile que vous souhaitez mettre à jour, puis cliquez sur **Update** (Mettre à jour).

1. Sur la page **Mettre à jour une pile**, choisissez un modèle de pile en utilisant l’une des options suivantes :
   + **Utiliser le modèle existant**
   + **Replace current template** (Remplacer le modèle actuel)
   + **Modifier le modèle dans Infrastructure Composer**

   Acceptez vos paramètres et sélectionnez **Next** (Suivant).

1. Sur la page **Définir les détails de la pile**, spécifiez les paramètres définis dans votre modèle de pile.

   Vous pouvez utiliser ou modifier n'importe quel paramètre contenant des valeurs par défaut.

1. Lorsque vous êtes satisfait de vos paramètres, choisissez **Next** (Suivant).

1. Sur la page **Configurer les options de la pile**, vous pouvez définir des options supplémentaires pour votre pile.

1. Pour **Comportement en cas d'échec de l'allocation**, sélectionnez **Preserve successfully provisioned resources** (Préserver les ressources correctement allouées).

1. Lorsque vous êtes satisfait de vos options de pile, choisissez **Next** (Suivant).

1. Passez en revue votre pile sur la page **Révision** et sélectionnez **Update stack** (Mettre à jour une pile).

*Résultats* : les ressources qui n’ont pas pu être mises à jour passent l’état de la pile à `UPDATE_FAILED` et reviennent au dernier état stable connu. Les ressources dont le dernier état stable est connu seront supprimées CloudFormation lors de la prochaine opération de pile. Les ressources qui sont correctement allouées se trouvent à l'état `CREATE_COMPLETE` ou `UPDATE_COMPLETE`. Vous pouvez surveiller la pile dans l’onglet **Stack events** (Événements de la pile).

------
#### [ Change set ]

**Note**  
Vous pouvez initier un jeu de modifications pour une pile dont l’état est `CREATE_FAILED` ou `UPDATE_FAILED`, mais pas pour un état `UPDATE_ROLLBACK_FAILED`.

**Pour préserver les ressources correctement allouées lors d'une opération de modification de pile**

1. Connectez-vous à la CloudFormation console AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. Sélectionnez la pile qui contient le jeu de modifications que vous souhaitez initier, puis choisissez l’onglet **Change sets** (Jeux de modifications).

1. Sélectionnez le jeu de modifications, puis cliquez sur **Execute** (Exécuter).

1. Pour **Execute change set** (Exécuter le jeu de modifications), sélectionnez l'option **Preserve successfully provisioned resources** (Préserver les ressources correctement allouées).

1. Sélectionnez **Execute change set** (Exécuter le jeu de modifications).

*Résultats* : les ressources qui n’ont pas pu être mises à jour passent l’état de la pile à `UPDATE_FAILED` et reviennent au dernier état stable connu. Les ressources dont le dernier état stable est connu seront supprimées CloudFormation lors de la prochaine opération de pile. Les ressources qui sont correctement allouées se trouvent à l'état `CREATE_COMPLETE` ou `UPDATE_COMPLETE`. Vous pouvez surveiller la pile dans l’onglet **Stack events** (Événements de la pile).

------

## Préserver les ressources correctement allouées (AWS CLI)
<a name="stack-failure-options-cli"></a>

------
#### [ Create stack ]

**Pour préserver les ressources correctement allouées lors d’une opération de création de pile**

Spécifiez l’option `--disable-rollback` ou l’énumération `on-failure DO_NOTHING` au cours d’une opération [create-stack](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html).

1. Fournissez un nom de pile et un modèle à la commande **create-stack** avec l’option `--disable-rollback`.

   ```
   aws cloudformation create-stack --stack-name myteststack \
       --template-body file://template.yaml \
       --disable-rollback
   ```

   La commande renvoie le résultat suivant.

   ```
   {
       "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896"
   }
   ```

1. Décrivez l’état de la pile à l’aide de la commande **describe-stacks**.

   ```
   aws cloudformation describe-stacks --stack-name myteststack
   ```

   La commande renvoie le résultat suivant.

   ```
   {
       "Stacks":  [
           {
               "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896",
               "Description": "AWS CloudFormation Sample Template",
               "Tags": [],
               "Outputs": [],
               "StackStatusReason": “The following resource(s) failed to create: [MyBucket]”,
               "CreationTime": "2013-08-23T01:02:15.422Z",
               "Capabilities": [],
               "StackName": "myteststack",
               "StackStatus": "CREATE_FAILED",
               "DisableRollback": true
           }
       ]
   }
   ```

------
#### [ Update stack ]

**Pour préserver les ressources provisionnées avec succès pendant une opération de mise à jour de la pile**

1. Fournissez un nom de pile et un modèle existants à la commande **update-stack** avec l’option `--disable-rollback`.

   ```
   aws cloudformation update-stack --stack-name myteststack \
       --template-url https://s3.amazonaws.com/amzn-s3-demo-bucket/updated.template --disable-rollback
   ```

   La commande renvoie le résultat suivant.

   ```
   {
       "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896"
   }
   ```

1. Décrivez l’état de la pile à l’aide de la commande **describe-stacks** ou **describe-stack-events**.

   ```
   aws cloudformation describe-stacks --stack-name myteststack
   ```

   La commande renvoie le résultat suivant.

   ```
   {
       "Stacks":  [
           {
               "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896",
               "Description": "AWS CloudFormation Sample Template",
               "Tags": [],
               "Outputs": [],
               "CreationTime": "2013-08-23T01:02:15.422Z",
               "Capabilities": [],
               "StackName": "myteststack",
               "StackStatus": "UPDATE_COMPLETE",
               "DisableRollback": true
           }
       ]
   }
   ```

------
#### [ Change set ]

**Note**  
Vous pouvez initier un jeu de modifications pour une pile dont l’état est `CREATE_FAILED` ou `UPDATE_FAILED`, mais pas pour un état `UPDATE_ROLLBACK_FAILED`.

**Pour préserver les ressources correctement allouées lors d'une opération de modification de pile**

Spécifiez l'`--disable-rollback`option lors d'une [execute-change-set](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/execute-change-set.html)opération.

1. Fournissez un nom de pile et un modèle à la commande **execute-change-set** avec l’option `--disable-rollback`.

   ```
   aws cloudformation execute-change-set --stack-name myteststack \
       --change-set-name my-change-set --template-body file://template.yaml
   ```

   La commande renvoie le résultat suivant.

   ```
   {
    "Id": "arn:aws:cloudformation:us-east-1:123456789012:changeSet/my-change-set/bc9555ba-a949-xmpl-bfb8-f41d04ec5784",
    "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896"
   }
   ```

1. Lancez le jeu de modifications à l'aide de l'option `--disable-rollback`.

   ```
   aws cloudformation execute-change-set --stack-name myteststack \
       --change-set-name my-change-set -–disable-rollback
   ```

1. Déterminez l’état de la pile à l’aide de la commande **describe-stacks** ou **describe-stack-events**.

   ```
   aws cloudformation describe-stack-events --stack-name myteststack
   ```

   La commande renvoie le résultat suivant.

   ```
   {
      "StackEvents": [
        {
           "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896",
           "EventId": "49c966a0-7b74-11ea-8071-024244bb0672",
           "StackName": "myteststack",
           "LogicalResourceId": " MyBucket",
           "PhysicalResourceId": "myteststack-MyBucket-abcdefghijk1",
           "ResourceType": "AWS::S3::Bucket",
           "Timestamp": "2020-04-10T21:43:17.015Z",
           "ResourceStatus": "UPDATE_FAILED"
           "ResourceStatusReason": "User XYZ is not allowed to perform S3::UpdateBucket on MyBucket"
        }
   }
   ```

1. Corrigez les erreurs d'autorisation et réessayez l'opération.

   ```
   aws cloudformation update-stack --stack-name myteststack \
       --use-previous-template --disable-rollback
   ```

   La commande renvoie le résultat suivant.

   ```
   {
       "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896"
   }
   ```

1. Décrivez l’état de la pile à l’aide de la commande **describe-stacks** ou **describe-stack-events**.

   ```
   aws cloudformation describe-stacks --stack-name myteststack
   ```

   La commande renvoie le résultat suivant.

   ```
   {
       "Stacks":  [
           {
               "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896",
               "Description": "AWS CloudFormation Sample Template",
               "Tags": [],
               "Outputs": [],
               "CreationTime": "2013-08-23T01:02:15.422Z",
               "Capabilities": [],
               "StackName": "myteststack",
               "StackStatus": "UPDATE_COMPLETE",
               "DisableRollback": true
           }
       ]
   }
   ```

------

### Rétablissement d’une pile
<a name="roll-back-stack-cli"></a>

Vous pouvez utiliser la commande [rollback-stack](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/rollback-stack.html) pour restaurer une pile avec un état `CREATE_FAILED` ou `UPDATE_FAILED` pile à son dernier état stable.

La commande **rollback-stack** suivante annule la pile spécifiée.

```
aws cloudformation rollback-stack --stack-name myteststack
```

La commande renvoie le résultat suivant.

```
{
    "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896"
}
```

**Note**  
L’opération **rollback-stack** supprimera une pile si elle ne contient pas un dernier état stable connu.