AWSSupport-StartEC2RescueWorkflow - AWS Systems Manager Referenz zum Automatisierungs-Runbook

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

AWSSupport-StartEC2RescueWorkflow

Beschreibung

Das AWSSupport-StartEC2RescueWorkflow Runbook führt das bereitgestellte Base64-kodierte Skript (Bash oder Powershell) auf einer Hilfsinstanz aus, die zur Rettung Ihrer Instanz erstellt wurde. Das Root-Volume Ihrer Instance ist an die Helper-Instance, auch Instance genannt, angehängt und an diese gemountet. EC2Rescue Wenn Ihre Instance unter Windows läuft, geben Sie ein Powershell-Skript an. Verwenden Sie andernfalls Bash. Das Runbook legt einige Umgebungsvariablen fest, die Sie in Ihrem Skript verwenden können. Die Umgebungsvariablen enthalten Informationen über die Eingabe, die Sie bereitgestellt haben, sowie Informationen zu dem Offline-Root-Volume. Das Offline-Volume ist bereits gemountet und kann verwendet werden. Beispiel: Sie können eine Desired State Configuration-Datei zu einem Offline-Windows-Root-Volume oder chroot zu einem Offline-Linux-Root-Volume speichern und eine Offline-Wiederherstellung durchführen.

Führen Sie diese Automatisierung aus (Konsole)

Wichtig

EC2Amazon-Instances, die über Marketplace Amazon Machine Images (AMIs) erstellt wurden, werden von dieser Automatisierung nicht unterstützt.

Zusätzliche Informationen

Um ein Skript mit base64 zu kodieren, können Sie PowerShell oder Bash verwenden. Powershell:

[System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes([System.IO.File]::ReadAllText('PATH_TO_FILE')))

Bash:

base64 PATH_TO_FILE

Hier sehen Sie eine Liste der Umgebungsvariablen, die Sie in Ihren Offline-Skripts verwenden können, je nach Ziel-Betriebssystem.

Windows:

Variable Beschreibung Beispielwert

$env: _ _ID EC2RESCUE ACCOUNT

{{global: ACCOUNT _ID}}

123456789012

$env: _ EC2RESCUE DATE

{{global:DATE}}

2018-09-07

$env: _ _ EC2RESCUE DATE TIME

{{global: DATE _TIME}}

2018-09-07_18.09.59

$env: _ _ EC2RESCUE EC2RW DIR

EC2Rescuefür Windows-Installationspfad

C:\Program Dateien\ Amazon\ EC2Rescue

$env: _ _ EC2RESCUE EC2RW DIR

EC2Rescuefür Windows-Installationspfad

C:\Program Dateien\ Amazon\ EC2Rescue

$env: __ID EC2RESCUE EXECUTION

{{Automatisierung: EXECUTION _ID}}

7ef8008e-219b-4aca-8bb5-65e2e898e20b

$env: EC2RESCUE _ _ _ OFFLINE CURRENT CONTROL SET

Offline Windows Current Control Set-Pfad

HKLM:\AWSTempSystem\ControlSet001

$env: _ _ EC2RESCUE OFFLINE DRIVE

Offline-Windows-Laufwerkbuchstabe

D:\

$env: _ _ _ EC2RESCUE OFFLINE EBS DEVICE

Offline-Root-Volume-Gerät EBS

xvdf

$env: EC2RESCUE _ _ _ OFFLINE KERNEL VER

Offline-Windows-Kernel-Version

6.1.7601.24214

$env: _ _OS_ EC2RESCUE OFFLINE ARCHITECTURE

Offline-Windows-Architektur

AMD64

$env: _ _OS_ EC2RESCUE OFFLINE CAPTION

Offline-Windows-Beschriftung

Windows Server 2008 R2 Datacenter

$env: _ _OS_ EC2RESCUE OFFLINE TYPE

Offline-Windows-Betriebssystemtyp

Server

$env: _ _ _ EC2RESCUE OFFLINE PROGRAM FILES DIR

Offline-Windows-Programmdateien-Verzeichnispfad

D:\Program Files

$env: EC2RESCUE _ _ _ _X86_ OFFLINE PROGRAM FILES DIR

Offline-Windows-Programmdateien-x86-Verzeichnispfad

D:\Program Files (x86)

$env: _ _ _ EC2RESCUE OFFLINE REGISTRY DIR

Offline-Windows-Registry-Verzeichnispfad

D:\Windows\System32\config

$env: _ _ _ EC2RESCUE OFFLINE SYSTEM ROOT

Offline-Windows-Systemstamm-Verzeichnispfad

D:\Windows

$env: _ EC2RESCUE REGION

{{global:REGION}}

us-west-1

$env: _S3_ EC2RESCUE BUCKET

{{S3}} BucketName

amzn-s3-Demo-Bucket

$env: _S3_ EC2RESCUE PREFIX

{{ S3Prefix }}

myprefix/

$env: EC2RESCUE _ _ SOURCE INSTANCE

{{ InstanceId }}

i-abcdefgh123456789

$skript: _ _ _ EC2RESCUE OFFLINE WINDOWS INSTALL

Offline-Windows-Installations-Metadaten

Customer PowerShell-Objekt

Linux:

Variable Beschreibung Beispielwert

EC2RESCUE_ _ID ACCOUNT

{{global: ACCOUNT _ID}}

123456789012

EC2RESCUE_DATE

{{global:DATE}}

2018-09-07

EC2RESCUE_DATE_TIME

{{global: DATE _TIME}}

2018-09-07_18.09.59

EC2RESCUE_EC2RL_DIR

EC2Rescuefür Linux-Installationspfad

/usr/local/ec2rl-1.1.3

EC2RESCUE_ EXECUTION _ID

{{Automatisierung: EXECUTION _ID}}

7ef8008e-219b-4aca-8bb5-65e2e898e20b

EC2RESCUE_OFFLINE_DEVICE

Offline-Gerätename

/dev/xvdf1

EC2RESCUE_OFFLINE_EBS_DEVICE

Offline-Root-Volume-Gerät EBS

/dev/sdf

EC2RESCUE_OFFLINE_SYSTEM_ROOT

Offline-Root-Volume-Mounting-Punkt

/mnt/mount

EC2RESCUE_PYTHON

Python-Version

python2.7

EC2RESCUE_REGION

{{global:REGION}}

us-west-1

EC2RESCUE_S3_ BUCKET

{{S3}} BucketName

amzn-s3-Demo-Bucket

EC2RESCUE_S3_ PREFIX

{{ S3Prefix }}

myprefix/

EC2RESCUE_SOURCE_INSTANCE

{{ InstanceId }}

i-abcdefgh123456789

Art des Dokuments

Automatisierung

Eigentümer

Amazon

Plattformen

LinuxmacOS, Windows

Parameter

  • AMIPrefix

    Typ: Zeichenfolge

    Standard: AWSSupport-EC2Rescue

    Beschreibung: (Optional) Ein Präfix für den AMI Backup-Namen.

  • AutomationAssumeRole

    Typ: Zeichenfolge

    Beschreibung: (Optional) Der Amazon-Ressourcenname (ARN) der Rolle AWS Identity and Access Management (IAM), der es Systems Manager Automation ermöglicht, die Aktionen in Ihrem Namen durchzuführen. Wenn keine Rolle angegeben ist, verwendet Systems Manager Automation die Berechtigungen des Benutzers, der dieses Runbook startet.

  • CreatePostEC2RescueBackup

    Typ: Zeichenfolge

    Zulässige Werte: true | false

    Standard: false

    Beschreibung: (Optional) Stellen Sie es auf ein, true um InstanceId nach AMI der Ausführung des Skripts, also vor dem Start, ein of zu erstellen. Das AMI bleibt auch nach Abschluss der Automatisierung bestehen. Es liegt in Ihrer Verantwortung, den Zugriff auf die AMI zu sichern oder sie zu löschen.

  • CreatePreEC2RescueBackup

    Typ: Zeichenfolge

    Zulässige Werte: true | false

    Standard: false

    Beschreibung: (Optional) Stellen Sie es auf ein, true um InstanceId vor AMI der Ausführung des Skripts ein of zu erstellen. Das AMI bleibt auch nach Abschluss der Automatisierung bestehen. Es liegt in Ihrer Verantwortung, den Zugriff auf die AMI zu sichern oder sie zu löschen.

  • EC2RescueInstanceType

    Typ: Zeichenfolge

    Gültige Werte: t2.small | t2.medium | t2.large

    Standard: t2.small

    Beschreibung: (Optional) Der Instance-Typ für die InstanceEC2. EC2Rescue

  • InstanceId

    Typ: Zeichenfolge

    Beschreibung: (Erforderlich) ID Ihrer EC2 Instanz. IMPORTANT: AWS Systems Manager Die Automatisierung stoppt diese Instanz. Auf den Instance-Speichervolumes gespeicherte Daten gehen verloren. Die öffentliche IP-Adresse ändert sich, wenn Sie keine Elastic IP verwenden.

  • OfflineScript

    Typ: Zeichenfolge

    Beschreibung: (Erforderlich) Base64-kodiertes Skript zur Ausführung gegen die Helper-Instance. Verwenden Sie Bash, wenn Ihre Quellinstanz Linux und PowerShell Windows ist.

  • S3 BucketName

    Typ: Zeichenfolge

    Beschreibung: (Optional) Name des S3-Buckets in Ihrem Konto, in den Sie die Protokolle zur Fehlerbehebung hochladen möchten. Stellen Sie sicher, dass die Bucket-Richtlinie keine unnötigen Lese-/Schreibberechtigungen für Parteien gewährt, die keinen Zugriff auf die gesammelten Protokolle benötigen.

  • S3Prefix

    Typ: Zeichenfolge

    Standard: AWSSupport-EC2Rescue

    Beschreibung: (Optional) Ein Präfix für die S3-Protokolle.

  • SubnetId

    Typ: Zeichenfolge

    Standard: SelectedInstanceSubnet

    Beschreibung: (Optional) Die Subnetz-ID für die EC2Rescue Instance. Standardmäßig wird dasselbe Subnetz verwendet, in dem sich die bereitgestellte Instance befindet. IMPORTANT: Wenn Sie ein benutzerdefiniertes Subnetz angeben, muss es sich in derselben Availability Zone befinden wie InstanceId und es muss den Zugriff auf die SSM Endpoints ermöglichen.

  • UniqueId

    Typ: Zeichenfolge

    Standard: {{automation: EXECUTION _ID}}

    Beschreibung: (Optional) Eine eindeutige Kennung für die Automatisierung.

Erforderliche IAM Berechtigungen

Der AutomationAssumeRole Parameter erfordert die folgenden Aktionen, um das Runbook erfolgreich zu verwenden.

Es wird empfohlen, dass dem Benutzer, der die Automatisierung ausführt, die IAM A-Role-verwaltete Richtlinie beigefügt ist. mazonSSMAutomation Zusätzlich zu dieser Richtlinie benötigt der Benutzer:

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "lambda:InvokeFunction", "lambda:DeleteFunction", "lambda:GetFunction" ], "Resource": "arn:aws:lambda:*:An-AWS-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::An-AWS-Account-ID:role/AWSSupport-EC2Rescue-*", "arn:aws:iam::An-AWS-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*" ], "Resource": "*", "Effect": "Allow" } ] }

Dokumentschritte

  1. aws:executeAwsApi- Beschreiben Sie die bereitgestellte Instanz

  2. aws:executeAwsApi- Beschreiben Sie das Root-Volume der bereitgestellten Instanz

  3. aws:assertAwsResourceProperty— Stellen Sie sicher, dass der Gerätetyp des Root-Volumes EBS

  4. aws:assertAwsResourceProperty- Stellen Sie sicher, dass das Root-Volume nicht verschlüsselt ist

  5. aws:assertAwsResourceProperty- Überprüfen Sie die angegebene Subnetz-ID

    1. (Verwenden Sie das aktuelle Instanz-Subnetz) — Wenn * SubnetId = SelectedInstanceSubnet *, dann starten Sieaws:createStack, um den Stack bereitzustellen EC2Rescue CloudFormation

    2. (Neues erstellenVPC) — Wenn * SubnetId = CreateNew VPC *, dann ausführenaws:createStack, um den EC2Rescue CloudFormation Stack bereitzustellen

    3. (Verwenden eines benutzerdefinierten Subnetzes) – In allen anderen Fällen:

      aws:assertAwsResourceProperty- Überprüfen Sie, ob sich das bereitgestellte Subnetz in derselben Availability Zone wie die bereitgestellte Instanz befindet

      aws:createStack- Stellen Sie den Stack EC2Rescue CloudFormation bereit

  6. aws:invokeLambdaFunction- Führen Sie eine zusätzliche Eingabevalidierung durch

  7. aws:executeAwsApi- Aktualisieren Sie den EC2Rescue CloudFormation Stack, um die EC2Rescue Helper-Instanz zu erstellen

  8. aws:waitForAwsResourceProperty- Warten Sie, bis das EC2Rescue CloudFormation Stack-Update abgeschlossen ist

  9. aws:executeAwsApi- Beschreiben Sie die EC2Rescue CloudFormation Stack-Ausgabe, um die EC2Rescue Helper-Instanz-ID zu erhalten

  10. aws:waitForAwsResourceProperty- Warten Sie, bis die EC2Rescue Helper-Instanz zu einer verwalteten Instanz wird

  11. aws:changeInstanceState- Stoppt die bereitgestellte Instanz

  12. aws:changeInstanceState- Stoppt die bereitgestellte Instanz

  13. aws:changeInstanceState- Erzwingt das Stoppen der bereitgestellten Instanz

  14. aws:assertAwsResourceProperty- Überprüfen Sie den CreatePre EC2RescueBackup Eingabewert

    1. (Vor dem EC2Rescue Backup erstellen) — Wenn * CreatePre EC2RescueBackup = true*

    2. aws:executeAwsApi- Erstellen Sie ein AMI Backup der bereitgestellten Instanz

    3. aws:createTags- Kennzeichnen Sie das AMI Backup

  15. aws:runCommand- EC2Rescue Auf der EC2Rescue Helper-Instanz installieren

  16. aws:executeAwsApi- Trennen Sie das Root-Volume von der bereitgestellten Instanz

  17. aws:assertAwsResourceProperty- Überprüfen Sie die bereitgestellte Instanzplattform

    1. (Instance ist Windows):

      aws:executeAwsApi- Hängen Sie das Root-Volume als *xvdf* an die EC2Rescue Helper-Instanz an

      aws:sleep- Schlafen Sie 10 Sekunden

      aws:runCommand- Führen Sie das bereitgestellte Offline-Skript in Powershell aus

    2. (Instance ist Linux):

      aws:executeAwsApi- Hängen Sie das Root-Volume als EC2Rescue */dev/sdf* an die Helper-Instanz an

      aws:sleep- Schlafen Sie 10 Sekunden

      aws:runCommand- Führen Sie das bereitgestellte Offline-Skript in Bash aus

  18. aws:changeInstanceState- Stoppen Sie die EC2Rescue Helper-Instanz

  19. aws:changeInstanceState- Erzwingt das Stoppen der EC2Rescue Hilfsinstanz

  20. aws:executeAwsApi- Trennen Sie das Root-Volume von der EC2Rescue Helper-Instanz

  21. aws:executeAwsApi- Hängen Sie das Root-Volume wieder an die bereitgestellte Instanz an

  22. aws:assertAwsResourceProperty- Überprüfen Sie den CreatePost EC2RescueBackup Eingabewert

    1. (EC2RescuePost-Backup erstellen) — Wenn * CreatePost EC2RescueBackup = true*

    2. aws:executeAwsApi- Erstellen Sie eine AMI Sicherungskopie der bereitgestellten Instanz

    3. aws:createTags- Kennzeichnen Sie das AMI Backup

  23. aws:executeAwsApi— Stellt den ursprünglichen Status „Löschen bei Beendigung“ für das Root-Volume der bereitgestellten Instanz wieder her

  24. aws:changeInstanceState- Stellt den ursprünglichen Zustand der bereitgestellten Instanz wieder her (laufend/gestoppt)

  25. aws:deleteStack- Löscht den Stapel EC2Rescue CloudFormation

Ausgaben

runScriptForLinux.Ausgabe

runScriptForWindows.Ausgabe

preScriptBackup.ImageId

postScriptBackup.ImageId