Options d'échec de pile - 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.

Options d'échec de pile

Vous pouvez développer vos applications de manière itérative en cas d'échec d'allocation en partant du point de défaillance sans annuler les ressources allouées avec succès. En spécifiant les options d'échec de pile, vous pouvez dépanner les ressources dans un état CREATE_FAILED ou UPDATE_FAILED. Vous pouvez allouer des options d'échec pour tous les déploiements de pile et les opérations d'ensembles de modifications.

  • Les opérations de création définies sur Preserve successfully provisioned resources (Préserver les ressources correctement allouées) préserve l'état des ressources réussies, tandis que les ressources en échec resteront à un état d'échec jusqu'à ce que la prochaine opération de mise à jour soit effectuée.

  • Les opérations de mise à jour et d'ensemble de modifications définies sur Preserve successfully provisioned resources (Préserver les ressources correctement allouées) permet de conserver l'état des ressources réussies tout en rétablissant les ressources en échec au 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.

Pour plus de détails sur la suspension de la restauration des ressources en échec, veuillez consulter les sections suivantes :

Présentation des options d'échec de pile

Avant d'exécuter une opération depuis la AWS 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 AWS Identity and Access Management (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 pour suspendre la restauration de la pile

Pour suspendre la restauration des ressources en échec dans votre pile, les conditions suivantes doivent être remplies.

  • Vous devez spécifier le paramètre Preserve successfully provisioned resources (Préserver les ressources correctement allouées) pendant une opération de pile. Pour plus d'informations sur le comportement d'annulation, consultezConfiguration des options de AWS CloudFormation pile.

  • Une opération de pile doit avoir l'état de pile CREATE_FAILED ou UPDATE_FAILED. Pour plus d'informations sur l'état de la pile, consultezCodes d'état de la pile.

Note

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

Préserver les ressources correctement allouées (console)

Create stack
Pour préserver les ressources correctement allouées lors d'une opération de création de pile
  1. Connectez-vous à la AWS CloudFormation console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/cloudformation.

  2. Choisissez Create stack (Créer une pile), puis sélectionnez With new resources (standard) (Avec de nouvelles ressources (standard)).

  3. Sur la page Specify template (Spécifier un modèle), choisissez un modèle de pile en utilisant l'une des options suivantes :

    • Template is ready (Le modèle est prêt)

    • Use a sample template (Utiliser un exemple de modèle)

    • Création à partir d'Application Composer

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

  4. 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).

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

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

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

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

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

  10. 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 AWS CloudFormation console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/cloudformation.

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

  3. Sur la page Mettre à jour une pile, choisissez un modèle de pile en utilisant l'une des options suivantes :

    • Use current template (Utiliser le modèle actuel)

    • Replace current template (Remplacer le modèle actuel)

    • Modifier le modèle dans Application Composer

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

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

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

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

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

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

  9. 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 AWS CloudFormation console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/cloudformation.

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

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

  4. 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).

  5. 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)

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.

  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://DOC-EXAMPLE-BUCKET.json --disable-rollback

    La commande renvoie le résultat suivant.

    {
        "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896"
    }
  2. Décrivez l'état de la pile à l'aide de la describe-stacks commande.

    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 correctement provisionnées lors d'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 DOC-EXAMPLE-BUCKET.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"
    }
  2. Décrivez l'état de la pile à l'aide de la describe-stack-events commande describe-stacks or.

    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-rollbackoption lors d'une execute-change-setopé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"
    }
  2. 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
  3. Déterminez l'état de la pile à l'aide de la describe-stack-events commande describe-stacks ou.

    { "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": "MyBucket", "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" } }
  4. 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"
    }
  5. Décrivez l'état de la pile à l'aide de la describe-stack-events commande describe-stacks or.

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

Restaurer la pile

Pour restaurer une pile à partir de l'état CREATE_FAILED ou UPDATE_FAILED

Utilisez la rollback-stack commande pour rétablir le dernier état stable d'une pile.

  • Lancez une restauration à l'aide de la rollback-stack commande et spécifiez le nom de la pile.

    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.