AWSSupport-StartEC2RescueWorkflow - AWS Systems Manager Référence du manuel d'automatisation

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

AWSSupport-StartEC2RescueWorkflow

Description

Le AWSSupport-StartEC2RescueWorkflow runbook exécute le script codé en base64 fourni (Bash ou Powershell) sur une instance d'assistance créée pour sauver votre instance. Le volume racine de votre instance est attaché et monté sur l'instance d'assistance, également appelée EC2Rescue instance. Si votre instance est basée sur Windows, fournissez un script Powershell. Dans le cas contraire, utilisez Bash. Le runbook définit certaines variables d'environnement que vous pouvez utiliser dans votre script. Les variables d'environnement contiennent des informations sur l'entrée que vous avez fournie, ainsi que des informations sur le volume racine hors connexion. Le volume hors connexion est déjà monté et prêt à être utilisé. Par exemple, vous pouvez enregistrer un fichier Desired State Configuration dans un volume racine Windows hors connexion ou exécuter une commande chroot pour un volume racine Linux hors connexion et effectuer une correction hors connexion.

Exécuter cette automatisation (console)

Important

EC2Les instances Amazon créées à partir de Marketplace Amazon Machine Images (AMIs) ne sont pas prises en charge par cette automatisation.

Informations supplémentaires

Pour coder un script en base64, vous pouvez utiliser Powershell ou Bash. PowerShell :

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

Bash :

base64 PATH_TO_FILE

Voici une liste des variables d'environnement que vous pouvez utiliser dans vos scripts hors connexion, en fonction du système d'exploitation cible

Windows :

Variable Description Exemple de valeur

$env : _ _ID EC2RESCUE ACCOUNT

{{global : ACCOUNT _ID}}

123456789012

$env : _ EC2RESCUE DATE

{{mondial :DATE}}

2018-09-07

$env : _ _ EC2RESCUE DATE TIME

{{mondial : DATE _TIME}}

2018-09-07_18.09.59

$env : _ _ EC2RESCUE EC2RW DIR

EC2Rescuepour le chemin d'installation de Windows

C:\Program Files \ Amazon \ EC2Rescue

$env : _ _ EC2RESCUE EC2RW DIR

EC2Rescuepour le chemin d'installation de Windows

C:\Program Files \ Amazon \ EC2Rescue

$env : _ _ID EC2RESCUE EXECUTION

{{automatisation : EXECUTION _ID}}

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

$env : EC2RESCUE _ _ _ OFFLINE _ CURRENT CONTROL SET

Chemin de l'ensemble de contrôles Windows hors connexion

HKLM:\AWSTempSystem\ControlSet001

$env : _ _ EC2RESCUE OFFLINE DRIVE

Lecteur Windows hors connexion

D:\

$env : EC2RESCUE _ _ _ OFFLINE EBS DEVICE

EBSAppareil à volume racine hors ligne

xvdf

$env : EC2RESCUE _ _ _ OFFLINE KERNEL VER

Version de noyau Windows hors connexion

6.1.7601.24214

$env : EC2RESCUE _ _OS_ OFFLINE ARCHITECTURE

Architecture Windows hors connexion

AMD64

$env : EC2RESCUE _ _OS_ OFFLINE CAPTION

Légende Windows hors connexion

Windows Server 2008 R2 Datacenter

$env : EC2RESCUE _ _OS_ OFFLINE TYPE

Type de système d'exploitation Windows hors connexion

Serveur

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

Chemin de répertoire de fichiers de programme Windows hors connexion

D:\Program Files

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

Chemin de répertoire de fichiers de programme x86 hors connexion

D:\Program Files (x86)

$env : EC2RESCUE _ _ _ OFFLINE REGISTRY DIR

Chemin de répertoire de registre Windows hors connexion

D:\Windows\System32\config

$env : EC2RESCUE _ _ _ OFFLINE SYSTEM ROOT

Chemin de répertoire racine du système Windows hors connexion

D:\Windows

$env : _ EC2RESCUE REGION

{{mondial :REGION}}

us-west-1

$env : _S3_ EC2RESCUE BUCKET

{{S3BucketName }}

seau de démonstration amzn-s3

$env : _S3_ EC2RESCUE PREFIX

{{ S3Prefix }}

myprefix/

$env : _ _ EC2RESCUE SOURCE INSTANCE

{{ InstanceId }}

i-abcdefgh123456789

$script : EC2RESCUE _ _ OFFLINE _ WINDOWS INSTALL

Métadonnées d'installation Windows hors connexion

Objet Powershell client

Linux :

Variable Description Exemple de valeur

EC2RESCUE_ ACCOUNT _IDENTIFIANT

{{global : ACCOUNT _ID}}

123456789012

EC2RESCUE_DATE

{{mondial :DATE}}

2018-09-07

EC2RESCUE_DATE_TIME

{{mondial : DATE _TIME}}

2018-09-07_18.09.59

EC2RESCUE_EC2RL_DIR

EC2Rescuepour le chemin d'installation de Linux

/usr/local/ec2rl-1.1.3

EC2RESCUE_ EXECUTION _IDENTIFIANT

{{automatisation : EXECUTION _ID}}

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

EC2RESCUE_OFFLINE_DEVICE

Nom du périphérique hors connexion

/dev/xvdf1

EC2RESCUE_OFFLINE_EBS_DEVICE

EBSAppareil à volume racine hors ligne

/dev/sdf

EC2RESCUE_OFFLINE_SYSTEM_ROOT

Point de montage du volume racine hors connexion

/mnt/mount

EC2RESCUE_PYTHON

Version Python

python2.7

EC2RESCUE_REGION

{{mondial :REGION}}

us-west-1

EC2RESCUE_S3_ BUCKET

{{S3BucketName }}

seau de démonstration amzn-s3

EC2RESCUE_S3_ PREFIX

{{ S3Prefix }}

myprefix/

EC2RESCUE_SOURCE_INSTANCE

{{ InstanceId }}

i-abcdefgh123456789

Type de document

 Automatisation

Propriétaire

Amazon

Plateformes

LinuxmacOS, Windows

Paramètres

  • AMIPrefix

    Type : String

    Par défaut : AWSSupport-EC2Rescue

    Description : (Facultatif) Préfixe pour le AMI nom de la sauvegarde.

  • AutomationAssumeRole

    Type : String

    Description : (Facultatif) Le nom de ressource Amazon (ARN) du rôle AWS Identity and Access Management (IAM) qui permet à Systems Manager Automation d'effectuer les actions en votre nom. Si aucun rôle n'est spécifié, Systems Manager Automation utilise les autorisations de l'utilisateur qui lance ce runbook.

  • CreatePostEC2RescueBackup

    Type : String

    Valeurs valides : true | false

    Valeur par défaut : false

    Description : (Facultatif) Réglez-le true sur pour créer un AMI ou InstanceId après avoir exécuté le script, avant de le démarrer. Ils AMI persisteront une fois l'automatisation terminée. Il est de votre responsabilité de sécuriser l'AMIaccès au ou de le supprimer.

  • CreatePreEC2RescueBackup

    Type : String

    Valeurs valides : true | false

    Valeur par défaut : false

    Description : (Facultatif) Réglez-le true sur pour créer un AMI ou InstanceId avant d'exécuter le script. Ils AMI persisteront une fois l'automatisation terminée. Il est de votre responsabilité de sécuriser l'AMIaccès au ou de le supprimer.

  • EC2RescueInstanceType

    Type : String

    Valeurs valides : t2.small | t2.medium | t2.large

    Par défaut : t2.small

    Description : (Facultatif) Type d'EC2instance de l'EC2Rescueinstance.

  • InstanceId

    Type : String

    Description : ID (obligatoire) de votre EC2 instance. IMPORTANT: AWS Systems Manager L'automatisation arrête cette instance. Les données stockées sur les volumes de stockage d'instance seront perdues. L'adresse IP publique change si vous n'utilisez pas une adresse IP Elastic.

  • OfflineScript

    Type : String

    Description : (Obligatoire) script codé en Base64 à exécuter sur l'instance d'assistant. Utilisez Bash si votre instance source est Linux et PowerShell si c'est Windows.

  • S3 BucketName

    Type : String

    Description : (Facultatif) nom du compartiment S3 de votre compte dans lequel vous souhaitez charger les journaux de dépannage. Assurez-vous que la stratégie de compartiment n'accorde pas des autorisations en lecture/écriture superflues pour les tiers qui n'ont pas besoin d'accéder aux journaux collectés.

  • S3Prefix

    Type : String

    Par défaut : AWSSupport-EC2Rescue

    Description : (Facultatif) préfixe pour les journaux S3.

  • SubnetId

    Type : String

    Par défaut : SelectedInstanceSubnet

    Description : (Facultatif) L'ID de sous-réseau de l'EC2Rescueinstance. Par défaut, le même sous-réseau dans lequel l'instance réside est utilisé. IMPORTANT: si vous fournissez un sous-réseau personnalisé, il doit se trouver dans la même zone de disponibilité que InstanceId les points de SSM terminaison et il doit autoriser l'accès à ceux-ci.

  • UniqueId

    Type : String

    Par défaut : {{automation : EXECUTION _ID}}

    Description : (Facultatif) Identifiant unique pour l'automatisation.

IAMAutorisations requises

Le AutomationAssumeRole paramètre nécessite les actions suivantes pour utiliser correctement le runbook.

Il est recommandé que la politique IAM gérée A Role soit attachée à l'utilisateur qui exécute l'automatisation. mazonSSMAutomation En plus de cette stratégie, l'utilisateur doit avoir :

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

Étapes de document

  1. aws:executeAwsApi- Décrivez l'instance fournie

  2. aws:executeAwsApi- Décrivez le volume racine de l'instance fournie

  3. aws:assertAwsResourceProperty- Vérifiez que le type de périphérique du volume racine est EBS

  4. aws:assertAwsResourceProperty- Vérifiez que le volume racine n'est pas crypté

  5. aws:assertAwsResourceProperty- Vérifiez l'ID de sous-réseau fourni

    1. (Utiliser le sous-réseau d'instance actuel) - Si * SubnetId = SelectedInstanceSubnet *, exécutez aws:createStack pour déployer la pile EC2Rescue CloudFormation

    2. (Créer un nouveauVPC) - Si * SubnetId = CreateNew VPC *, exécutez aws:createStack pour déployer la EC2Rescue CloudFormation pile

    3. (Utiliser un sous-réseau personnalisé) - Dans tous les autres cas :

      aws:assertAwsResourceProperty- Vérifiez que le sous-réseau fourni se trouve dans la même zone de disponibilité que l'instance fournie

      aws:createStack- Déployez la EC2Rescue CloudFormation pile

  6. aws:invokeLambdaFunction- Procéder à une validation des entrées supplémentaire

  7. aws:executeAwsApi- Mettre à jour la EC2Rescue CloudFormation pile pour créer l'EC2Rescueinstance d'assistance

  8. aws:waitForAwsResourceProperty- Attendez que la mise à jour de la EC2Rescue CloudFormation pile soit terminée

  9. aws:executeAwsApi- Décrivez la sortie de la EC2Rescue CloudFormation pile pour obtenir l'ID de l'EC2Rescueinstance d'assistance

  10. aws:waitForAwsResourceProperty- Attendez que l'instance EC2Rescue d'assistance devienne une instance gérée

  11. aws:changeInstanceState- Arrête l'instance fournie

  12. aws:changeInstanceState- Arrête l'instance fournie

  13. aws:changeInstanceState- Forcer l'arrêt de l'instance fournie

  14. aws:assertAwsResourceProperty- Vérifiez la valeur CreatePre EC2RescueBackup d'entrée

    1. (Créer une EC2Rescue pré-sauvegarde) - Si * CreatePre EC2RescueBackup = vrai*

    2. aws:executeAwsApi- Créez une AMI sauvegarde de l'instance fournie

    3. aws:createTags- Marquez la AMI sauvegarde

  15. aws:runCommand- Installation EC2Rescue sur l'instance EC2Rescue d'assistance

  16. aws:executeAwsApi- Détachez le volume racine de l'instance fournie

  17. aws:assertAwsResourceProperty- Vérifiez la plate-forme d'instance fournie

    1. (Instance Windows) :

      aws:executeAwsApi- Attachez le volume racine à l'instance d'EC2Rescueassistance sous la forme *xvdf*

      aws:sleep- Dormez 10 secondes

      aws:runCommand- Exécutez le script hors ligne fourni dans Powershell

    2. (Instance Linux) :

      aws:executeAwsApi- Attachez le volume racine à l'instance d'EC2Rescueassistance sous la forme */dev/sdf*

      aws:sleep- Dormez 10 secondes

      aws:runCommand- Exécute le script hors ligne fourni dans Bash

  18. aws:changeInstanceState- Arrêtez l'EC2Rescueinstance d'assistance

  19. aws:changeInstanceState- Forcer l'arrêt de l'EC2Rescueinstance d'assistance

  20. aws:executeAwsApi- Détachez le volume racine de l'instance d'EC2Rescueassistance

  21. aws:executeAwsApi- Rattachez le volume racine à l'instance fournie

  22. aws:assertAwsResourceProperty- Vérifiez la valeur CreatePost EC2RescueBackup d'entrée

    1. (Créer une EC2Rescue post-sauvegarde) - Si * CreatePost EC2RescueBackup = vrai*

    2. aws:executeAwsApi- Créez une AMI sauvegarde de l'instance fournie

    3. aws:createTags- Marquez la AMI sauvegarde

  23. aws:executeAwsApi- Restaure l'état initial de suppression à la fin du volume racine de l'instance fournie

  24. aws:changeInstanceState- Restaure l'état initial de l'instance fournie (en cours d'exécution/arrêtée)

  25. aws:deleteStack- Supprimer la EC2Rescue CloudFormation pile

Sorties

runScriptForLinux. Sortie

runScriptForWindows. Sortie

preScriptBackup.ImageId

postScriptBackup.ImageId