Ausführen des EC2Rescue-Tools auf nicht erreichbaren Instances - AWS Systems Manager

Ausführen des EC2Rescue-Tools auf nicht erreichbaren Instances

EC2Rescue kann Ihnen bei der Diagnose und Behebung von Problemen auf Amazon Elastic Compute Cloud (Amazon EC2)-Instances für Linux und Windows Server helfen. Sie können das Tool manuell ausführen, wie unter Verwenden von EC2Rescue für Linux Server und Verwenden von EC2Rescue für Windows Server beschrieben. Sie können das Tool auch automatisch mit der Systems Manager Automation und dem AWSSupport-ExecuteEC2Rescue-Runbook ausführen. Automation ist eine Funktion von AWS Systems Manager. Das AWSSupport-ExecuteEC2Rescue-Runbook ist darauf ausgelegt, eine Kombination aus Systems Manager-Aktionen, AWS CloudFormation-Aktionen und Lambda-Funktionen auszuführen, die die normalerweise erforderlichen Schritte zur Verwendung von EC2Rescue automatisieren.

Sie können das AWSSupport-ExecuteEC2Rescue-Runbook verwenden, um verschiedene Arten von Problemen bei Betriebssystemen (OS) zu behandeln und möglicherweise zu lösen. Instances mit verschlüsselten Root-Volumes werden nicht unterstützt. Eine vollständige Liste finden Sie in den folgenden Themen:

Windows: Weitere Informationen finden Sie unter Rescue-Aktion in Verwenden von EC2Rescue für Windows Server mit der Befehlszeile.

Linux und macOS: Einige EC2Rescue für Linux-Module erkennen Probleme und versuchen, diese zu lösen. Weitere Informationen finden Sie in der aws-ec2rescue-linux-Dokumentation für jedes Modul auf GitHub.

Funktionsweise

Die Fehlerbehebung bei einer Instance mit Automation und dem AWSSupport-ExecuteEC2Rescue-Runbook funktioniert folgendermaßen:

  • Sie geben die ID der nicht erreichbaren Instance an und starten das Runbook.

  • Das System erstellt eine temporäre VPC und führt dann eine Reihe von Lambda-Funktionen aus, um die VPC zu konfigurieren.

  • Das System identifiziert ein Subnetz für Ihre temporäre VPC in derselben Availability Zone wie die ursprüngliche Instance.

  • Das System startet eine temporäre, SSM-fähige Helferobjekt-Instance.

  • Das System stoppt Ihre ursprüngliche Instance und erstellt einen Backup. Anschließend fügt es das ursprüngliche Stamm-Volume an die Helferobjekt-Instance an.

  • Das System verwendet Run Command zur Ausführung von EC2Rescue auf der Helferobjekt-Instance. EC2Rescue erkennt Probleme auf dem angehängten, ursprünglichen Stamm-Volume und versucht, sie zu beheben. Nach der Fertigstellung hängt EC2Rescue das Stamm-Volume wieder an die ursprüngliche Instance an.

  • Das System startet die ursprüngliche Instance neu und beendet die temporäre Instance. Das System beendet ebenso die temporäre VPC und die Lambda-Funktionen, die zu Beginn der Automatisierung erstellt wurden.

Bevor Sie beginnen

Bevor Sie die folgende Automation ausführen, führen Sie die folgenden Schritte aus:

  • Kopieren Sie die Instance-ID der nicht erreichbaren Instance. Sie legen diese ID im Verfahren fest.

  • Erfassen Sie optional die ID eines Subnetzes in derselben Availability Zone wie Ihre unerreichbare Instance. Die EC2Rescue Instance wird in diesem Subnetz erstellt. Wenn Sie kein Subnetz angeben, erstellt Automation eine neue temporäre VPC in Ihrem AWS-Konto. Stellen Sie sicher, dass in Ihrem AWS-Konto mindestens eine VPC verfügbar ist. Sie können standardmäßig fünf VPCs in einer Region erstellen. Wenn Sie bereits fünf VPCs in der Region erstellt haben, schlägt die Automatisierung fehl, ohne dass Änderungen an Ihrer Instance vorgenommen werden. Weitere Informationen zu Amazon VPC-Kontingenten finden Sie unter VPC und Subnetze im Amazon VPC-Benutzerhandbuch.

  • Optional können Sie eine AWS Identity and Access Management (IAM)-Rolle für Automation erstellen und angeben. Falls Sie diese Rolle nicht festlegen, wird die Automatisierung im Kontext des Benutzers ausgeführt, der die Automatisierung ausgeführt hat.

Gewähren von AWSSupport-EC2Rescue-Berechtigungen zum Durchführen von Aktionen auf Ihren Instances

EC2Rescue benötigt die Berechtigung, um während der Automatisierung eine Reihe von Aktionen auf Ihren Instances durchzuführen. Diese Aktionen rufen die Services AWS Lambda, IAM und Amazon EC2 auf, um zu versuchen, die Probleme mit Ihren Instances sicher zu beheben. Wenn Sie über Administratorberechtigungen in Ihrem AWS-Konto und/oder Ihrer VPC verfügen, können Sie die Automatisierung möglicherweise ohne Konfiguration von Berechtigungen ausführen, wie in diesem Abschnitt beschrieben. Falls Sie keine Administratorberechtigungen besitzen, müssen Sie oder ein Administrator Berechtigungen anhand einer der folgenden Optionen konfigurieren.

Erteilen von Berechtigungen mithilfe von IAM-Richtlinien

Sie können entweder die folgende IAM-Richtlinie als eingebundene Richtlinie an Ihren Benutzer, Ihre Gruppe oder Ihre Rolle anfügen. Sie können aber auch eine neue verwaltete IAM-Richtlinie erstellen und diese an Ihren Benutzer, Ihre Gruppe oder Ihre Rolle anfügen. Weitere Informationen zum Hinzufügen einer eingebundenen Richtlinie zu Ihrem Benutzerkonto, Ihrer Gruppe oder Ihrer Rolle finden Sie unter Verwenden von eingebundenen Richtlinien. Weitere Informationen zum Erstellen einer neuen verwalteten Richtlinien finden Sie unter Verwenden von eingebundenen Richtlinien.

Anmerkung

Wenn Sie eine neue mit IAM verwaltete Richtlinie erstellen, müssen Sie auch die verwaltete AmazonSSMAutomationRole-Richtlinie anfügen, damit Ihre Instances mit der Systems Manager-API kommunizieren können.

IAM-Richtlinie für AWSSupport-EC2Rescue

Ersetzen Sie account ID (Konto-ID) mit Ihren eigenen Informationen.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "lambda:InvokeFunction", "lambda:DeleteFunction", "lambda:GetFunction" ], "Resource": "arn:aws:lambda:*:account ID:function:AWSSupport-EC2Rescue-*", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::awssupport-ssm.*/*.template", "arn:aws:s3:::awssupport-ssm.*/*.zip" ], "Effect": "Allow" }, { "Action": [ "iam:CreateRole", "iam:CreateInstanceProfile", "iam:GetRole", "iam:GetInstanceProfile", "iam:PutRolePolicy", "iam:DetachRolePolicy", "iam:AttachRolePolicy", "iam:PassRole", "iam:AddRoleToInstanceProfile", "iam:RemoveRoleFromInstanceProfile", "iam:DeleteRole", "iam:DeleteRolePolicy", "iam:DeleteInstanceProfile" ], "Resource": [ "arn:aws:iam::account ID:role/AWSSupport-EC2Rescue-*", "arn:aws:iam::account ID:instance-profile/AWSSupport-EC2Rescue-*" ], "Effect": "Allow" }, { "Action": [ "lambda:CreateFunction", "ec2:CreateVpc", "ec2:ModifyVpcAttribute", "ec2:DeleteVpc", "ec2:CreateInternetGateway", "ec2:AttachInternetGateway", "ec2:DetachInternetGateway", "ec2:DeleteInternetGateway", "ec2:CreateSubnet", "ec2:DeleteSubnet", "ec2:CreateRoute", "ec2:DeleteRoute", "ec2:CreateRouteTable", "ec2:AssociateRouteTable", "ec2:DisassociateRouteTable", "ec2:DeleteRouteTable", "ec2:CreateVpcEndpoint", "ec2:DeleteVpcEndpoints", "ec2:ModifyVpcEndpoint", "ec2:Describe*", "autoscaling:DescribeAutoScalingInstances" ], "Resource": "*", "Effect": "Allow" } ] }

Erteilen von Berechtigungen mithilfe einer AWS CloudFormation-Vorlage

AWS CloudFormation automatisiert die Erstellung von IAM-Rollen und IAM-Richtlinien mithilfe einer vorkonfigurierten Vorlage. Erstellen Sie mit den folgenden Schritten die erforderlichen IAM-Rollen und IAM-Richtlinien für die EC2Rescue-Automatisierung mithilfe von AWS CloudFormation.

So erstellen Sie die erforderlichen IAM-Rollen und IAM-Richtlinien für EC2Rescue
  1. Laden Sie AWSSupport-EC2RescueRole.zip herunter und extrahieren Sie die AWSSupport-EC2RescueRole.json-Datei in ein Verzeichnis auf Ihrem lokalen Computer.

  2. Wenn es sich bei Ihrem AWS-Konto um eine spezielle Partition handelt, bearbeiten Sie die Vorlage, um die ARN-Werte in die Werte für Ihre Partition zu ändern.

    Ändern Sie beispielsweise für arn:aws alle Fälle von in arn:aws-cn.

  3. Melden Sie sich bei der AWS Management Console an und öffnen Sie die AWS CloudFormation-Konsole unter https://console.aws.amazon.com/cloudformation.

  4. Klicken Sie auf Create stack (Stack erstellen), With new resources (standard) (Mit neuen Ressourcen (Standard)).

  5. Wählen Sie auf der Seite Create stack (Stack erstellen) unter Prerequisite - Prepare template (Voraussetzung – Vorlage vorbereiten) die Option Template is ready (Vorlage ist bereit) aus.

  6. Wählen Sie unter Vorlage angeben die Option Vorlagendatei hochladen aus.

  7. Wählen Sie Choose file (Datei auswählen) aus, navigieren Sie dann zu der AWSSupport-EC2RescueRole.json-Datei aus dem Verzeichnis, in dem Sie sie extrahiert haben, und wählen Sie sie aus.

  8. Wählen Sie Weiter.

  9. Geben Sie auf der Seite Specify stack details (Stack-Details angeben) für das Feld Stack name (Stack-Name) einen Namen ein, um diesen Stack zu identifizieren. Wählen Sie dann Next (Weiter) aus.

  10. (Optional) Wenden Sie im Bereich Tags ein oder mehrere Tag-Schlüsselname/-wertpaare auf den Stack an.

    Tags sind optionale Metadaten, die Sie einer Ressource zuweisen. Mithilfe von Tags können Sie eine Ressource unterschiedlich kategorisieren, beispielsweise nach Zweck, Besitzer oder Umgebung. Beispielsweise können Sie einen Stack kennzeichnen, um den Typ der ausgeführten Aufgaben, die Typen von Zielen oder anderen Ressourcen und die Umgebung zu identifizieren, in der er ausgeführt wird.

  11. Wählen Sie Next (Weiter)

  12. Scrollen Sie auf der Seite Review (Prüfen) nach unten, überprüfen Sie die Stack-Detials und wählen Sie die Option I acknowledge that AWS CloudFormation might create IAM resources (Ich bin mir bewusst, dass CFN IAM-Ressourcen erstellen kann).

  13. Wählen Sie Stack erstellen aus.

    AWS CloudFormation zeigt den einige Minuten lang Status CREATE_IN_PROGRESS an. Nach dem Erstellen des Stacks ändert sich der Status in CREATE_COMPLETE. Sie können auch auf das Aktualisierungssymbol klicken, um den Status des Erstellungsprozesses zu überprüfen.

  14. Wählen Sie in der Stacks-Liste die Option neben den Stack, den Sie gerade erstellt haben, und wählen Sie dann die Registerkarte Outputs (Ausgaben).

  15. Notieren Sie sich den Wert. Das ist der ARN von AssumeRole. Sie geben diesen ARN an, wenn Sie die Automatisierung in der nächsten Prozedur ausführen, Ausführen der Automation.

Ausführen der Automation

Wichtig

Der folgende Automatisierung hält die nicht erreichbare Instance an. Das Anhalten der Instance kann zu Datenverlusten auf den angehängten Instance-Speicher-Volumes (sofern vorhanden) führen. Das Anhalten der Instance kann auch dazu führen, dass die öffentliche IP-Adresse geändert wird, wenn keine elastische IP-Adresse zugeordnet ist.

Führen Sie die AWSSupport-ExecuteEC2Rescue-Automation aus.
  1. Öffnen Sie die AWS Systems Manager-Konsole unter https://console.aws.amazon.com/systems-manager/.

  2. Klicken Sie im Navigationsbereich auf Automation.

  3. Wählen Sie Automatisierung ausführen.

  4. Wählen Sie im Abschnitt Automation document (Automatisierungsdokument) die Option Owned by Amazon (Im Besitz von Amazon) aus der Liste aus.

  5. Wählen Sie in der Runbooks-Liste die Schaltfläche auf der Karte für AWSSupport-ExecuteEC2Rescue und wählen Sie danach Weiter.

  6. Klicken Sie auf der Seite Execute automation document (Automation-Dokument ausführen) auf Simple execution (Einfache Ausführung).

  7. Überprüfen Sie im Abschnitt Document details (Dokumentdetails), ob Document version (Dokumentversion) auf die höchste Standardversion gesetzt ist. Beispiel: $DEFAULT oder 3 (default) (3 (Standard)).

  8. Geben Sie im Abschnitt Input Parameters die folgenden Parameter an.

    1. Geben Sie für UnreachableInstanceId die ID der nicht erreichbaren Instance an.

    2. (Optional) Geben Sie für EC2RescueInstanceType einen Instance-Typ für die EC2Rescue-Instance an. Der Standard-Instance-Typ lautet t2.medium.

    3. Wenn Sie für AutomationAssumeRole mithilfe der zuvor in diesem Thema beschriebenen AWS CloudFormation-Vorgehensweise Rollen für diese Automatisierung erstellt haben, wählen Sie den ARN von AssumeRole aus, den Sie in der AWS CloudFormation-Konsole erstellt haben.

    4. (Optional) Geben Sie für LogDestination einen S3-Bucket an, wenn Sie Protokolle auf Betriebssystemebene erfassen wollen, während Sie eine Fehlersuche für Ihre Instance ausführen. Protokolle werden automatisch in den angegebenen Bucket hochgeladen.

    5. Geben Sie für SubnetId ein Subnetz in einer vorhandenen VPC in derselben Availability Zone wie die unerreichbare Instance an. Standardmäßig erstellt Systems Manager eine neue VPC, aber Sie können ein Subnetz in einer vorhandenen VPC angeben, wenn Sie möchten.

      Anmerkung

      Wenn Sie die Option zum Erstellen eines Buckets oder einer Subnetz-ID nicht sehen, überprüfen Sie, ob Sie die neueste Default-Version des Runbooks verwenden.

  9. (Optional) Wenden Sie im Bereich Tags mindestens ein Tag-Schlüsselname-/-Wert-Paar an, um die Automatisierung zu identifizieren, z. B. Key=Purpose,Value=EC2Rescue.

  10. Wählen Sie Ausführen.

Das Runbook erstellt ein Backup AMI als Teil der Automatisierung. Alle anderen von der Automatisierung erstellten Ressourcen werden automatisch gelöscht, aber dieses AMI verbleibt in Ihrem Konto. Der AMI-Name wird unter Verwendung der folgenden Konvention generiert:

Backup AMI: AWSSupport-EC2Rescue:UnreachableInstanceId

Sie finden dieses AMI in der Amazon EC2-Konsole, indem Sie nach der Automation-Ausführungs-ID suchen.