Comment puis-je arrêter une instance en état « stop_failed » dans AWS OpsWorks lorsque je reçois un message « Internal Error » ?

Dernière mise à jour : 02/11/2020

Je n’arrive pas à arrêter les instances marquées comme « stop_failed » dans AWS OpsWorks Stacks. Mon rôle de service AWS Identity and Access Management (IAM) dispose de toutes les autorisations requises, mais lorsque j'essaie d'arrêter mes instances via AWS Management Console, je reçois un message « Erreur interne ». Parfois, je vois qu'aucune instance Amazon Elastic Compute Cloud (Amazon EC2) n'est associée à mes instances OpsWorks Stacks. Comment puis-je marquer en toute sécurité mes instances OpsWorks Stacks comme arrêtées ?

Brève description

Vous ne pouvez pas arrêter une instance dans OpsWorks Stacks si l'instance a été supprimée dans Amazon EC2. Pour trouver l'instance qui doit être arrêtée, l'appel d' API OpsWorks StopInstance nécessite un ID d'instance EC2 et des autorisations associées dans le rôle de service IAM. Lorsque OpsWorks Stacks ne parvient pas à localiser l'ID EC2, l'appel d'API échoue et renvoie un message « Erreur interne ». Pour que StopInstance fonctionne quand l'instance EC2 sous-jacente a déjà été supprimée ou lorsqu'il y a une erreur interne, vous devez utiliser la clause —force.

Résolution

Remarque : si vous recevez des erreurs lors de l'exécution de commandes depuis l'interface de ligne de commande AWS (AWS CLI), assurez-vous d'utiliser la version la plus récente d’AWS CLI.

Récupérez les ID d'instance OpsWorks des instances qui doivent être marquées comme arrêtées

1.    Pour filtrer les instances dans l'état stopped_failed d'une pile donnée, exécutez la commande describe-instances avec une requête :

$ aws opsworks describe-instances --stack-id your-stack-id --region your-region --query 'Instances[?Status=='stop_failed'].{Id:InstanceId}'

2.    Notez les ID d'instance que vous souhaitez marquer comme étant arrêtés.

Remarque : si vous utilisez le point de terminaison OpsWorks Stacks classique, utilisez alorsus-east-1 comme région AWS.

Utilisez la clause —force pour arrêter les instances

Si vous avez une seule instance à marquer comme étant arrêtée, exécutez la commande stop-instance :

$ aws opsworks stop-instance --instance-id your-opsworks-instance-id --force --region your-region

Si vous avez plusieurs instances, vous pouvez parcourir les instances en utilisant une logique personnalisée. Par exemple : 

$ for Id in $(aws opsworks describe-instances --stack-id your-stack-id --region your-region --query 'Instances[?Status==`start_failed`].{Id:InstanceId}' --output text) ; do aws opsworks stop-instance --instance-id $Id --force --region your-region  ; done

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


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