Comment puis-je résoudre l'erreur « Volume Vol-xxxxxxxxxx ne peut pas être modifié dans l'état de modification OPTIMISATION » dans CloudFormation lorsque j'essaie de mettre à jour mon type de volume Amazon EBS (AWS። EC2። Volume) ?

Date de la dernière mise à jour : 05/05/2021

Je reçois l'erreur « Volume Vol-xxxxxxxxxxxxxx ne peut pas être modifié dans l'état de modification OPTIMISATION » ou une erreur similaire dans AWS CloudFormation. Cette erreur se produit lorsque j'essaie de mettre à jour mon type de volume Amazon Elastic Block Store (Amazon EBS). Mon volume EBS (AWS። EC2። Volume) est bloqué dans l'état UPDATE_IN_PROGRESS pendant une longue période et échoue finalement à mettre à jour le type de volume. Ma pile ne parvient pas à se mettre à jour et la restauration de mise à jour suivante échoue également. Ensuite, la pile finit dans l'état UPDATE_ROLLBACK_FAILED.

Brève description

Si vous utilisez des informations d'identification lorsque votre pile CloudFormation modifie un volume EBS, le délai d'expiration du volume est d'environ sept heures. Si vous exécutez la pile à l'aide d'un rôle de service AWS Identity and Access Management (IAM), CloudFormation augmente le délai d'expiration à 36 heures.

Remarque : la période de délai d'expiration du volume s'applique uniquement à la modification de volume à l'aide de CloudFormation. Le délai d'expiration varie selon les types de ressources et d'actions.

Généralement, un volume EBS de 1 téraoctet (TiB) entièrement utilisé prend environ six heures pour migrer vers une nouvelle configuration de performances. Pour plus d'informations, consultez Contrôler la progression des modifications de volumes.

Important : si vous avez déjà lancé une mise à jour de pile avec CloudFormation, vous devez attendre environ sept heures jusqu'à ce que la pile se stabilise avant de passer aux étapes suivantes. Votre pile est stabilisée lorsqu'elle entre l'état UPDATE_ROLLBACK_FAILED.

Résolution

Remarque : si des erreurs s'affichent lors de l'exécution de commandes AWS Command Line Interface (AWS CLI), assurez-vous que vous utilisez la version la plus récente d'AWS CLI.

Récupérer votre pile après avoir attendu que la pile se stabilise

Voyez les exemples suivants. Si vous changez votre type de volume EBS de st1 à gp3, votre pile peut ne pas réussir à mettre à jour le type de volume en raison de la taille du volume. Dans ce scénario, vous pouvez récupérer votre pile en effectuant l'opération continue-update-rollback sur votre pile. Pour l'opération de récupération, vous devez ignorer l'ID logique de la ressource dont la mise à jour a échoué. Votre pile se retrouve dans l'état UPDATE_ROLLBACK_COMPLETE.

Récupérez votre pile à l'aide de la console AWS CLI ou CloudFormation.

AWS CLI :

aws cloudformation continue-update-rollback --stack-name your-stack-name --resources-to-skip logical-ID-of-EBS-volume

Console CloudFormation :

1.    Ouvrez la console CloudFormation.

2.    Dans le volet de navigation, sélectionnez Stacks (Piles).

3.    Dans la colonne Stack Name (Nom de la pile), sélectionnez la pile bloquée dans l’état UPDATE_ROLLBACK_FAILED.

4.    Choisissez Actions de la pile, puis Continuer l'annulation de mise à jour.

5.    Dans la boîte de dialogue Poursuivre la restauration de la mise à jour, développez Résolution des problèmes avancée.

6.    Dans la section Ressources à ignorer - facultatif, sélectionnez les ressources que vous souhaitez ignorer.

Remarque : veillez à sélectionner l'ID logique du volume dont la mise à jour a échoué.

7.    Choisissez Poursuivre la restauration de la mise à jour.

Mettre à jour votre pile pour qu'elle corresponde à l'état actuel de votre volume EBS

Vous devez mettre à jour votre pile pour qu'elle corresponde à l'état actuel de votre volume EBS. Votre modèle CloudFormation est mis à jour par votre mise à jour de pile, et votre pile passe à l'état UPDATE_COMPLETE.

Par exemple, vous pouvez modifier le type de volume (AWS። EC2። Volume) de st1 à gp3. Toutefois, le type de volume dans CloudFormation reste st1 en raison de l'opération d'annulation, même si la mise à jour vers gp3 est reflétée avec précision dans Amazon EBS.

1.    Pour surveiller l'état de votre volume EBS, utilisez la console Amazon EC2 ou exécutez la commande suivante :

aws ec2 describe-volumes-modifications --volume-ids your-volume-ID

2.    Une fois le type de volume modifié en gp3 dans Amazon EBS, mettez à jour la pile CloudFormation avec le type de volume (AWS። EC2። Volume) en tant que gp3.

Remarque : vous pouvez modifier votre modèle CloudFormation en changeant le type de volume sur gp3. Ensuite, effectuez l'opération de mise à jour.

3.    Utilisez la détection de dérive pour vérifier que votre ressource de volume EBS (AWS። EC2። Volume) est synchronisée avec votre pile.

Important : la mise à jour de votre pile peut prendre plus de 36 heures si vous n'utilisez pas de rôle de service ou si la taille du volume est élevée (~8 TiB). Dans de tels cas, votre mise à jour de pile peut échouer même après avoir utilisé un rôle de service avec 36 heures de stabilisation. Ensuite, vous devez attendre que votre pile se stabilise. Pendant cette période, vous ne pouvez modifier aucun autre type de ressource. Pour résoudre ce problème, procédez comme suit :

1.    Utilisez une stratégie de suppression de conservation pour supprimer le volume EBS de votre pile sans supprimer le volume.

2.    Mettez à jour votre volume EBS en dehors de CloudFormation à l'aide de la console Amazon EBS.

3.    Importez votre volume EBS dans votre pile.

Si vous souhaitez conserver le volume dans la pile à tout moment, vous devez maintenir la taille du volume en dessous d'un seuil. Par exemple, si 8 TiB de données prend 64 heures, vous pouvez estimer la taille maximale pendant 36 heures et abaisser la taille des données à 4 TiB. Cet ajustement de seuil permet de terminer votre mise à jour.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?