Pourquoi ma pile AWS CloudFormation est-elle bloquée dans l'état REVIEW_IN_PROGRESS ?

Lecture de 3 minute(s)
0

Ma pile AWS CloudFormation est bloquée dans l'état REVIEW_IN_PROGRESS.

Brève description

Une pile bloquée dans l'état REVIEW_IN_PROGRESS signifie que vous avez essayé de créer la pile à l'aide d'un jeu de modifications qui n'a pas été exécuté. Lorsque vous créez un jeu de modifications pour une nouvelle pile, CloudFormation crée un ID de pile unique mais aucune ressource. Si vous n'exécutez pas le jeu de modifications, la pile reste bloquée dans l'état REVIEW_IN_PROGRESS.

Remarque : si vous recevez des erreurs lors de l'exécution des commandes AWS CLI, assurez-vous que vous utilisez la version AWS CLI la plus récente.

Solution

Suivez les étapes ci-dessous pour exécuter un jeu de modifications en fonction de votre méthode préférée.

Depuis la console AWS CloudFormation

  1. Ouvrez la console AWS CloudFormation.
  2. Dans le panneau de navigation, sélectionnez Stacks (Piles), puis recherchez la pile bloquée.
  3. Sélectionnez l'onglet Change Sets (Jeux de modifications).
  4. Sélectionnez le dernier jeu de modifications et passez en revue les modifications.
  5. Sélectionnez Execute (Exécuter) pour créer la pile.

Depuis AWS Command Line Interface (AWS CLI)

1.    Exécutez la commande list-change-sets suivante pour répertorier tous les jeux de modifications :

aws cloudformation list-change-sets --stack-name StackName

2.    Identifiez le jeu de modifications et exécutez la commande execute-change-set suivante :

aws cloudformation execute-change-set –change-set-name ChangeSetName

Depuis la console AWS CodePipeline

L'utilisation d'AWS CodePipeline pour déployer vers CloudFormation avec le mode d'action Create or replace a change set (Créer ou remplacer un ensemble de modifications) permet uniquement de créer ou de remplacer le jeu de modifications. Le jeu de modifications n'est pas automatiquement exécuté. Pour exécuter le jeu de modifications, vous devez ajouter le mode d'action Execute a change set (Exécuter un jeu de modifications).

  1. Ouvrez la console AWS CodePipeline.
  2. Identifiez le pipeline qui se déploie vers CloudFormation.
  3. Sélectionnez Edit (Modifier), puis Edit Deploy stage (Modifier l'étape de déploiement).
  4. Sélectionnez Add Action group (Ajouter un groupe d'action).
  5. Dans le champ Action name (Nom de l'action), saisissez le nom de votre action.
  6. Pour Action provider (Fournisseur d'actions), sélectionnez AWS CloudFormation.
  7. Pour Action mode (Mode d'action), sélectionnez Execute a change set (Exécuter un jeu de modifications).
  8. Sélectionnez Save (Enregistrer).

Depuis AWS CLI

1.    Exécutez la commande get-pipeline suivante pour copier la structure du pipeline dans un fichier JSON :

aws codepipeline get-pipeline --name MyPipeline >pipeline.json

2.    Ajoutez CHANGE_SET_EXECUTE comme ActionMode pour l'étape Deploy (Déploiement) :

{
  "name": "Deploy",
  "blockers": null,
  "actions": [
    {
      "name": "Deploy",
      "actionTypeId": {
        "category": "Deploy",
        "owner": "AWS",
        "provider": "CloudFormation",
        "version": "1"
      },
      "runOrder": 1,
      "configuration": {
        "TemplatePath": "SourceArtifact::ssm.yml",
        "ActionMode": "CHANGE_SET_REPLACE",
        "Capabilities": "CAPABILITY_IAM,CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND",
        "ChangeSetName": "CFNTest-CS",
        "RoleArn": "arn:aws:iam::xxxxx:role/xxx",
        "StackName": "CFNTest"
      },
      "outputArtifacts": [],
      "inputArtifacts": [
        {
          "name": "SourceArtifact"
        }
      ],
      "roleArn": null,
      "region": "us-east-1",
      "namespace": "DeployVariables"
    },
    {
      "name": "ExecuteChangeSet",
      "actionTypeId": {
        "category": "Deploy",
        "owner": "AWS",
        "provider": "CloudFormation",
        "version": "1"
      },
      "runOrder": 2,
      "configuration": {
        "ActionMode": "CHANGE_SET_EXECUTE",
        "ChangeSetName": "CFNTest-CS",
        "StackName": "CFNTest"
      },
      "outputArtifacts": [],
      "inputArtifacts": [
        {
          "name": "SourceArtifact"
        }
      ],
      "roleArn": null,
      "region": "us-east-1",
      "namespace": null
    }
  ]
}

3.    Exécutez la commande update-pipeline suivante pour copier le pipeline dans un fichier JSON :

aws codepipeline update-pipeline --cli-input-json file://pipeline.json

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an