Warum ist die Option „Recover this instance“ (Diese Instanz wiederherstellen) deaktiviert, wenn in der EC2-Konsole ein Alarm erstellt wird?

Lesedauer: 5 Minute
0

Ich versuche, einen Amazon CloudWatch-Alarm in der Amazon Elastic Compute Cloud (Amazon EC2)-Konsole zu erstellen. Ich möchte meine EC2-Instance wiederherstellen, wenn sie durch einen zugrunde liegenden Hardwarefehler beeinträchtigt ist und dann eine Benachrichtigung senden, wenn der Alarm ausgelöst wird. Auf der Seite „Create Alarm“ (Alarm erstellen) ist jedoch die Option „Recover this instance“ (Diese Instanz wiederherstellen) unter „Take the action“ (Aktion ausführen) ausgegraut (deaktiviert). Die Optionen für Alarmmeldungen sind ebenfalls deaktiviert. Wie schalte ich diese Optionen wieder ein?

Kurzbeschreibung

Wenn CloudWatch feststellt, dass eine EC2-Instance Instance-Speichervolumes verwendet, ist die Option Diese Instance wiederherstellen deaktiviert. Die Wiederherstellungsaktion wird für EC2-Instances, die Instance-Speicher-Volumes verwenden, nicht unterstützt, einschließlich solcher, die mit blockierten Gerätezuordnungen für Instance-Speichervolumes gestartet wurden. CloudWatch liest die Metadaten, die jeder EC2-Instance zugeordnet sind, um zu überprüfen, ob sie keine Instance-Speichervolumes verwendet, bevor die Wiederherstellungsaktion aktiviert wird.

Hinweis: Die Aktion Wiederherstellen wird nur für bestimmte Instance-Typen unterstützt. Stellen Sie sicher, dass Sie einen unterstützten Instance-Typ starten. Weitere Informationen finden Sie unter Recover your instance. Die EC2-Alarmaktion zur Wiederherstellung ist nur für die Metrik StatusCheckFailed\ _System gültig.

Behebung

Hinweis: Wenn Sie beim Ausführen von AWS Command Line Interface (AWS CLI) -Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste AWS-CLI-Version verwenden.

Bevor Sie fortfahren, lesen Sie den Abschnitt Erstellen von Alarmen, die eine Instance stoppen, beenden, neu starten oder wiederherstellen. Stellen Sie sicher, dass Sie alle Voraussetzungen für die Erstellung von CloudWatch-Alarmen erfüllen.

Finden Sie temporäre Instance-Speicher-Volumes in EC2-Linux-Instances

1.Stellen Sie eine Verbindung zu Ihrer Linux-Instance her.

2.Verwenden Sie den folgenden Befehl, um Metadaten von Ihrer Instance abzurufen.

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

3.Verwenden Sie die Ausgabe, um Instance-Speicher-Volumes (deren Namen mit „ephemeral“ beginnen) zu identifizieren, die der Instance zugeordnet sind. In dieser Ausgabe gibt es beispielsweise zwei Instance-Speichervolumes („ephemeral0" und „ephemeral2"):

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

Finden Sie temporäre Instance-Speicher-Volumes in EC2-Windows-Instances

Mit einem Browser:

1.Stellen Sie eine Verbindung zu Ihrer Windows-Instance her.

2.Öffnen Sie einen Browser und stellen Sie eine Verbindung her mit:

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

3.Verwenden Sie die zurückgegebenen Informationen, um die der Instanz zugeordneten Instance-Speichervolumes (deren Namen mit „ephemeral“ beginnen) zu identifizieren.

Verwenden von Windows PowerShell:

1.Stellen Sie in PowerShell eine Verbindung zu Ihrer Windows-Instance her.

2.Führen Sie den folgenden Befehl aus:

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

3.Verwenden Sie die Ausgabe, um Instance-Speicher-Volumes (deren Namen mit „ephemeral“ beginnen) zu identifizieren, die der Instance zugeordnet sind. In dieser Ausgabe gibt es beispielsweise ein Instance-Speichervolume („ephemeral0"):

ami
ephemeral0
root
swap

Weitere Informationen finden Sie unter Instance-Block-Gerätezuordnung für Instance-Speicher-Volumes anzeigen.

Finden Sie temporäre Instance-Speichervolumes in AMIs für EC2-Instances

Überprüfen Sie die Blockgerätezuordnungen für das Amazon Machine Image (AMI) für Ihre EC2-Instance. Suchen Sie nach Speichervolumes für Blockgeräte-Instances, deren Feld „Geräte blockieren“ „=ephemeral#“ enthält, wobei „#“ eine Ganzzahl zwischen 0 und 23 ist.

Die Blockgerätezuordnung kann auch dann erfolgen, wenn der Instance-Typ Instance-Speichervolumes nicht offiziell unterstützt. Diese Aktion kann ausgeführt werden, wenn Sie eine der folgenden Optionen verwenden, um eine EC2-Instance (Windows oder Linux) zu starten:

  • Die AWS-CLI
  • Ein SDK
  • Ein Service wie AWS CloudFormation

Wenn Sie die Amazon EC2-Konsole verwenden, um einen Instance-Typ zu starten, der keine Instance-Speichervolumes unterstützt, ignoriert Amazon EC2 modifizierte Blockgerätezuordnungen.

Sie können die EBS-Volumes in der Blockgerätezuordnung eines AMI mithilfe der Amazon EC2-Konsole oder der AWS-CLI auflisten.

Der folgende Befehl describe-images gibt beispielsweise das BlockDeviceMapping für das AMI zurück:

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

Beispielausgabe mit Instance-Speichervolumes, deren „VirtualName“ mit „ephemeral“ beginnt:

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"
   }
],

Entfernen oder überschreiben Sie alle Verweise auf Instance-Speichervolumes im AMI

Nachdem Sie bestätigt haben, dass Ihre EC2-Instance Instance-Speichervolumes verwendet, müssen Sie alle Verweise auf Instance-Speicher-Volumes im AMI entfernen oder überschreiben. Anschließend müssen Sie die Instance neu starten, da Instance-Speichervolumes einer vorhandenen EC2-Instance nicht hinzugefügt oder daraus entfernt werden können.

Verwenden Sie eine der folgenden Methoden, um Verweise auf Instance-Speichervolumes zu entfernen oder zu überschreiben:

  • Entfernen Sie Verweise auf Instance-Speichervolumes aus dem AMI. Starten Sie dann die Instance neu.
  • Starten Sie die EC2-Instance von der Amazon EC2-Konsole aus, um das AMI für Instance-Typen zu überschreiben, die Instance-Speichervolumes nicht unterstützen.
  • Starten Sie die EC2-Instance über die AWS-CLI und überschreiben Sie dann manuell jedes Gerät im AMI, das auf ein Instance-Speichervolume verweist. Wenn Sie beispielsweise die Geräte „/dev/sdb“ und „/dev/sdc“ haben, die Instance-Speichervolumes zugeordnet sind, starten Sie Ihre EC2-Instance mit dem Befehl 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": ""}]'
  • Erstellen Sie für eine von CloudFormation gestartete EC2-Instance eine CloudFormation-Vorlage, um die Zuordnung von Geräten zu Instance-Speicher-Volumes zu überschreiben. Zum Beispiel:
{
  "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": {}
     }
  ]
   }
  }
 }
}
  • Für eine EC2-Instance, die von einem SDK gestartet wurde, lesen Sie in der entsprechenden SDK-Dokumentation nach, wie Sie die Zuordnung von Geräten zu Instance-Speichervolumes überschreiben können.

Weitere Informationen

Amazon CloudWatch-Alarme verwenden

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 5 Jahren