Je souhaite comprendre pourquoi mon instance Linux Amazon Elastic Compute Cloud (EC2) s’arrête automatiquement.
Résolution
Une instance Amazon EC2 Linux se termine en raison de volumes Amazon Block Store (Amazon EBS) chiffrés ou parce que la configuration du démon d’audit dispose d'un espace disque insuffisant.
L’instance se termine en raison de volumes EBS chiffrés
Pour vérifier si un volume est chiffré, ouvrez la console Amazon EC2, puis sélectionnez Volumes. Les volumes chiffrés à l’aide d’une clé AWS Key Management Service (AWS KMS) portent l’étiquette Chiffré dans la colonne Chiffrement.
Consultez les journaux système pour vérifier si l’instance a commencé à démarrer le système d’exploitation (OS). Si l’instance n’a pas démarré le système d’exploitation et que les volumes sont chiffrés, le rôle AWS Identity and Access Management (IAM) ne dispose pas des autorisations d’accès par clé AWS KMS.
Remarque : si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS (AWS CLI), consultez la page Résoudre les erreurs liées à AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.
Pour vérifier l’autorisation IAM, procédez comme suit :
-
Exécutez la commande describe-instances pour vérifier le message d’erreur et le code d’erreur StateReason :
$ aws ec2 describe-instances --instance-id i-example-id --region example-region --query "Reservations[].Instances[].{StateReason:StateReason}" --output json
Remarque : remplacez i-Example-ID par l’ID de votre instance. Remplacez example-region par votre région AWS.
Si un volume chiffré attaché à l’instance présente des problèmes d’autorisations ou de règles, vous recevez un message d’erreur client. Vous obtenez un résultat similaire à l'exemple suivant :
[
[
{
"StateReason": {
"Code": "Client.InternalError",
"Message": "Client.InternalError: Client error on launch"
}
}
]
]
-
Vérifiez que le rôle IAM dispose des autorisations IAM appropriées :
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": [
"kms:CreateGrant",
"kms:Decrypt",
"kms:DescribeKey",
"kms:GenerateDataKeyWithoutPlainText",
"kms:ReEncrypt"
],
"Resource": [
"arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
"arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321"
]
}
}
Si vous avez lancé l’instance indirectement via un autre service, tel qu'Amazon EC2 Auto Scaling, configurez la politique clé avec les autorisations appropriées.
La configuration du démon d’audit met fin à l’instance en raison d’une erreur de remplissage du disque
Si l’instance a commencé à démarrer, accédez aux journaux de démarrage dans une capture d’écran de l’instance ou dans les journaux système. Vous obtenez un résultat similaire à l'exemple suivant :
Aug 19 04:11:02 ip-10-0-202-230 auditd[4300]: Audit daemon is low on disk space for logging
Aug 19 04:11:02 ip-10-0-202-230 auditd[4300]: The audit daemon is now halting the system
Aug 19 04:11:02 ip-10-0-202-230 systemd: Stopping Session 29 of user splunk.
Aug 19 04:11:02 ip-10-0-202-230 systemd: Stopped target Timers.
Pour résoudre les erreurs de saturation du disque, procédez comme suit :
-
Ouvrez la console Amazon EC2.
-
Dans le volet de navigation, sélectionnez Instances, puis cliquez sur l’instance.
-
Arrêtez l'instance, puis détachez le volume racine EBS (/dev/xvda pour Linux) de l’instance.
-
Utilisez l’instance Linux qui se trouve dans votre zone de disponibilité. Ou lancez une nouvelle instance à utiliser comme instance de secours.
-
Attachez le volume racine EBS à l’instance de secours en tant que périphérique secondaire, par exemple /dev/xvdf.
-
Utilisez SSH pour vous connecter à votre instance de secours.
-
Créez un répertoire de points de montage pour le nouveau volume que vous avez associé à l’instance de secours. Les commandes sudo suivantes sont uniquement applicables aux environnements Linux :
sudo mkdir /mnt/rescue
sudo mount /dev/xvdf /mnt/rescue
Remarque : remplacez /dev/xvdf par le nom du périphérique secondaire et /mnt/rescue par le nom du répertoire de votre point de montage.
-
Augmentez la taille du volume de la racine et étendez la partition.
-
Exécutez la commande unmount pour démonter le volume :
sudo umount /mnt/rescue
-
Détachez le volume de l’instance de secours et associez-le à l'instance d’origine avec le nom du périphérique, par exemple /dev/xvda pour Linux. Démarrez ensuite l’instance pour vérifier qu’elle démarre correctement.
-
Vérifiez la configuration du service d’audit pour vous assurer qu’il n’est pas possible d'arrêter la machine en cas de manque d’espace. Pour Amazon Linux, Amazon Linux 2 et Amazon Linux 2023, vérifiez que la configuration du service d'audit inclut bien les options suivantes dans /etc/audit/auditd.conf :
max_log_file_action = ROTATE
admin_space_left_action = SUSPEND
disk_full_action = SUSPEND
disk_error_action = SUSPEND
Informations connexes
Résoudre les problèmes de lancement d’une instance Amazon EC2
Pourquoi ne puis-je pas démarrer ou lancer mon instance EC2 ?