AWSSupport-StartEC2RescueWorkflow - AWS Systems Manager Guide de 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 encodé 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'assistant, également connu sous le nom d'instance EC2Rescue. 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écutez cette automatisation (console)

Important

Les instances Amazon EC2 créées à partir des AMI (Amazon Machine Images) de Marketplace 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]::Unicode.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:EC2RESCUE_ACCOUNT_ID

{{ 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

Chemin d'installation d'EC2Rescue pour Windows

C:\Program Files\Amazon\EC2Rescue

$env:EC2RESCUE_EC2RW_DIR

Chemin d'installation d'EC2Rescue pour Windows

C:\Program Files\Amazon\EC2Rescue

$env:EC2RESCUE_EXECUTION_ID

{{ automation: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

Périphérique EBS de volume racine hors connexion

xvdf

$env:EC2RESCUE_OFFLINE_KERNEL_VER

Version de noyau Windows hors connexion

6.1.7601.24214

$env:EC2RESCUE_OFFLINE_OS_ARCHITECTURE

Architecture Windows hors connexion

AMD64

$env:EC2RESCUE_OFFLINE_OS_CAPTION

Légende Windows hors connexion

Windows Server 2008 R2 Datacenter

$env:EC2RESCUE_OFFLINE_OS_TYPE

Type de système d'exploitation Windows hors connexion

de bases de données

$env:EC2RESCUE_OFFLINE_PROGRAM_FILES_DIR

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

D:\Program Files

$env:EC2RESCUE_OFFLINE_PROGRAM_FILES_X86_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

{{ global:REGION }}

us-west-1

$env:EC2RESCUE_S3_BUCKET

{{S3BucketName}}

mybucket

$env:EC2RESCUE_S3_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_ID

{{ 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

Chemin d'installation d'EC2Rescue pour Linux

/usr/local/ec2rl-1.1.3

EC2RESCUE_EXECUTION_ID

{{ automation:EXECUTION_ID }}

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

EC2RESCUE_OFFLINE_DEVICE

Nom du périphérique hors connexion

/dev/xvdf1

EC2RESCUE_OFFLINE_EBS_DEVICE

Périphérique EBS de volume racine hors connexion

/dev/sdf

EC2RESCUE_OFFLINE_SYSTEM_ROOT

Point de montage du volume racine hors connexion

/mnt/mount

EC2RESCUE_PYTHON

Version Python

python2.7

EC2RESCUE_REGION

{{ global:REGION }}

us-west-1

EC2RESCUE_S3_BUCKET

{{S3BucketName}}

mybucket

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 nom AMI de secours.

  • 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 démarre ce runbook.

  • CreatePostEC2 RescueBackup

    Type : String

    Valeurs valides : true | false

    Par défaut : faux

    Description : (Facultatif) Réglez-la true sur pour créer une AMI ou InstanceId après avoir exécuté le script, avant de le démarrer. L'AMI sera conservée une fois l'automatisation terminée. Vous devez sécuriser l'accès à l'AMI ou le supprimer.

  • CreatePreEC2 RescueBackup

    Type : String

    Valeurs valides : true | false

    Par défaut : faux

    Description : (Facultatif) true Définissez-la sur pour créer une AMI InstanceId avant d'exécuter le script. L'AMI sera conservée une fois l'automatisation terminée. Vous devez sécuriser l'accès à l'AMI ou le supprimer.

  • EC2 RescueInstanceType

    Type : String

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

    Par défaut : t2.small

    Description : (Facultatif) type d'instance EC2 pour l'instance EC2Rescue.

  • InstanceId

    Type : String

    Description : (Obligatoire) ID de votre instance EC2. IMPORTANT : AWS Systems Manager Automation 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 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) ID de sous-réseau pour l'instance EC2Rescue. 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 les points de InstanceId terminaison SSM et autoriser l'accès à ces derniers.

  • UniqueId

    Type : String

    Par défaut : {{ automation:EXECUTION_ID }}

    Description : (Facultatif) Un identifiant unique pour l'automatisation.

Autorisations IAM requises

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

Il est recommandé à l'utilisateur qui exécute l'automatisation d'associer la politique de gestion AmazonSSM AutomationRole IAM. 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 de l'instance actuelle) - Si * SubnetId = SelectedInstanceSubnet *, exécutez aws:createStack pour déployer la pile EC2Rescue CloudFormation

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

    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 pile EC2Rescue CloudFormation

  6. aws:invokeLambdaFunction- Effectuer une validation d'entrée supplémentaire

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

  8. aws:waitForAwsResourceProperty- Attendez la fin de la mise à jour de la CloudFormation pile EC2Rescue

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

  10. aws:waitForAwsResourceProperty- Attendez que l'instance d'assistance EC2Rescue 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- Arrêt forcé de l'instance fournie

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

    1. (Créer une sauvegarde avant EC2Rescue) - Si* EC2 = vrai* CreatePre RescueBackup

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

    3. aws:createTags- Marquez la sauvegarde de l'AMI

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

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

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

    1. (Instance Windows) :

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

      aws:sleep- Dormez 10 secondes

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

    2. (Instance Linux) :

      aws:executeAwsApi- Attachez le volume racine à l'instance d'assistance EC2Rescue en tant que */dev/sdf*

      aws:sleep- Dormez 10 secondes

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

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

  19. aws:changeInstanceState- Arrêt forcé de l'instance d'assistance EC2Rescue

  20. aws:executeAwsApi- Détache le volume racine de l'instance d'assistance EC2Rescue

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

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

    1. (Créer une sauvegarde après EC2Rescue) - Si* EC2 = vrai* CreatePost RescueBackup

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

    3. aws:createTags- Marquez la sauvegarde de l'AMI

  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 pile EC2Rescue CloudFormation

Sorties

runScriptForLinux. Sortie

runScriptForWindows.Sortie

preScriptBackup.ImageId

postScriptBackup.ImageId