Pourquoi l'option « Recover this instance » (Restaurer cette instance) est-elle désactivée lors de la création d'une alarme dans la console EC2 ?

Dernière mise à jour : 12/12/2018

J'essaie de créer une alarme Amazon CloudWatch dans la console Amazon Elastic Compute Cloud (Amazon EC2). Je souhaite restaurer mon instance EC2 si cette dernière est dégradée suite à une défaillance du matériel sous-jacent et envoyer une notification lorsque l'alarme se déclenche. Toutefois, sur la page Create Alarm (Créer une alarme), l'option « Recover this instance » (Restaurer cette instance) sous « Take the action » (Prendre la mesure) est grisée (désactivée). Les options de notification d'alarme sont également désactivées. Comment réactiver ces options ?

Brève description

Si CloudWatch détermine qu'une instance EC2 utilise des volumes de stockage d'instance, l'option Recover this instance (Restaurer cette instance) est désactivée. L'action de récupération n'est pas prise en charge pour les instances EC2 qui utilisent des volumes de stockage d'instance, y compris les instances lancées avec des mappages de périphérique de stockage en mode bloc pour des volumes de stockage d'instance. CloudWatch lit les métadonnées associées à chaque instance EC2 pour vérifier qu'elle n'utilise pas les volumes de stockage d'instance avant d'activer l'action de restauration.

Remarque : l'action de restauration est prise en charge seulement sur certains types d'instances. Veillez à lancer un type d'instance pris en charge. Pour plus d'informations, consultez Restauration de votre instance. L'action d'alarme de restauration EC2 est valide uniquement pour la métrique StatusCheckFailed_System.

Solution

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

Avant de poursuivre, consultez Créer des alarmes qui arrêtent, mettent fin, redémarrent ou restaurent une instance. Veillez à remplir toutes les conditions de création d'alarmes CloudWatch.

Recherche de volumes de stockage d'instance éphémères dans des instances EC2 Linux

1.     Connectez-vous à votre instance Linux.

2.     Utilisez la commande suivante pour restaurer les métadonnées de votre instance.

curl http://169.254.169.254/latest/meta-data/block-device-mapping/

3.     Utilisez la sortie pour identifier les volumes de stockage d'instance (dont le nom commence par « ephemeral » assocés à l'instance. Par exemple, cette sortie contient deux volumes de stockage d'instance (« ephemeral0 » et « ephemeral2 » :

[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/block-device-mapping/
ami
ephemeral0
ephemeral2
root

Recherche de volumes de stockage d'instance éphémères dans des instances EC2 Windows

Utilisation d'un navigateur :

1.     Connectez-vous à votre instance Windows.

2.     Ouvrez un navigateur et connectez-vous à :

http://169.254.169.254/latest/meta-data/block-device-mapping/

3.     Utilisez les informations renvoyées pour identifier les volumes de stockage d'instance (dont le nom commence par « ephemeral » associés à l'instance.

Utilisation de Windows Powershell :

1.     Connectez-vous à votre instance Windows dans PowerShell.

2.     Exécutez la commande suivante :

PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/block-device-mapping/

3.     Utilisez la sortie pour identifier les volumes de stockage d'instance (dont le nom commence par « ephemeral » assocés à l'instance. Par exemple, cette sortie contient un volume de stockage d'instance (« ephemeral0 ») :

ami
ephemeral0
root
swap

Recherche de volumes de stockage d'instance éphémères dans les AMI des instances EC2

Vérifiez les mappages de périphériques de stockage par bloc de l'Amazon Machine Image (AMI) de votre instance EC2. Recherchez les volumes de stockage d'instance de périphérique de stockage par bloc dont le champ « Block Devices » (Périphériques de stockage par bloc) inclut « =ephemeral# », où « # » est un entier compris entre 0 et 23.

Le mappage de périphérique de stockage par bloc peut se produire même si le type d'instance ne prend pas officiellement en charge les volumes de stockage d'instance. Cette action peut se produire lorsque vous utilisez l'une des options suivantes pour lancer une instance EC2 (Windows ou Linux) :

  • L'interface de ligne de commande (CLI) AWS
  • Un kit SDK
  • Un service tel qu'AWS CloudFormation 

Lorsque vous utilisez la console Amazon EC2 pour lancer un type d'instance qui ne prend pas en charge les volumes de stockage d'instance, Amazon EC2 ignore les mappages de périphériques de stockage par bloc modifiés.

Vous pouvez énumérer les volumes EBS dans le mappage de périphériques de stockage par bloc d'une AMI à l'aide de la console Amazon EC2 ou de l'interface de ligne de commande (CLI) AWS.

Par exemple, la commande CLI AWS describe-images renvoie le BlockDeviceMapping de l'AMI :

aws ec2 describe-images --image-ids ami-xxxxxxxx

Exemple de sortie avec des volumes de stockage d'instance pour lesquels « VirtualName » commence par « ephemeral » :

aws ec2 describe-images --image-ids ami-11112222

"BlockDeviceMappings": [
   {
      "DeviceName": "/dev/xvda",
      "Ebs": {
         "DeleteOnTermination": true,
         "SnapshotId": "snap-        ",
         "VolumeSize": 8,
         "VolumeType": "gp2",
         "Encrypted": false
      }
   },
   {
      "DeviceName": "/dev/sdb",
      "VirtualName": "ep0hemeral0"
   },
   {
      "DeviceName": "/dev/sdc",
      "VirtualName": "ephemeral2"
   }
],

Suppression ou remplacement des références à des volumes de stockage d'instance dans l'AMI

Après avoir vérifié que votre instance EC2 utilise des volumes de stockage d'instance, vous devez supprimer ou remplacer toutes les références aux des volumes de stockage d'instance dans l'AMI. Ensuite, vous devez relancer l'instance, car les volumes de stockage d'instance ne peuvent pas être ajoutés ou supprimés à partir d'une instance EC2 existante.

Utilisez une des méthodes suivantes pour supprimer ou remplacer les références aux volumes de stockage d'instance :

  • Supprimez les références à des volumes de stockage d'instance à partir de l'AMI. Ensuite, relancez l'instance.
  • Lancez l'instance EC2 à partir de la console Amazon EC2 pour remplacer l'AMI des types d'instance qui ne prennent pas en charge les volumes de stockage d'instance.
  • Lancez l'instance EC2 à partir de l'interface de ligne de commande (CLI) AWS et remplacez manuellement chaque périphérique dans l'AMI qui fait référence à un volume de stockage d'instance. Par exemple, si les périphériques « /dev/sdb » et « /dev/sdc » sont associés à des volumes de stockage d'instance, lancez votre instance EC2 à l'aide de la commande run-instances :
aws ec2 run-instances --image-id ami-11112222 --subnet-id subnet-11112222 --instance-type t2.medium
 --key-name my_key --associate-public-ip-address --block-device-mappings 
 '[{"DeviceName": "/dev/sdb","NoDevice": ""},{"DeviceName": "/dev/sdc","NoDevice": ""}]'
  • Pour une instance EC2 lancée par CloudFormation, créez un modèle CloudFormation pour remplacer l'association des périphériques aux volumes de stockage d'instance. Par exemple :
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
   "I4EY8I": {
    "Type": "AWS::EC2::Instance",
    "Properties": {
     "ImageId" : "ami-11112222",
     "InstanceType" : "t2.medium",
     "SubnetId" : "subnet-11112222",
     "KeyName" : "my_key",
   "BlockDeviceMappings" : [
     {
       "DeviceName":"/dev/sdb",
       "NoDevice": {}
     },
     {
       "DeviceName":"/dev/sdc",
       "NoDevice": {}
     }
  ]
   }
  }
 }
}
  • Pour une instance EC2 lancée par un kit SDK, reportez-vous à la documentation du kit pour savoir comment remplacer l'association des périphériques aux volumes de stockage d'instance.

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


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