

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`
<a name="automation-awssupport-startec2rescueworkflow"></a>

 **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 instance EC2 Rescue. 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)](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-StartEC2RescueWorkflow)

**Important**  
Les instances Amazon EC2 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 | 
| --- | --- | --- | 
|  \$1env : RESCUE\$1ACCOUNT\$1ID EC2  |  \$1\$1 global:ACCOUNT\$1ID \$1\$1  |  123456789012  | 
|  \$1env : RESCUE\$1DATE EC2  |  \$1\$1 global:DATE \$1\$1  |  2018-09-07  | 
|  \$1env : RESCUE\$1DATE\$1TIME EC2  |  \$1\$1 global:DATE\$1TIME \$1\$1  |  2018-09-07\$118.09.59  | 
|  \$1env : EC2 RESCUE\$1 RW\$1DIR EC2  |  EC2Chemin d'installation de Rescue for Windows  |  C:\$1Program Files \$1 Amazon \$1 EC2 Rescue  | 
|  \$1env : EC2 RESCUE\$1 RW\$1DIR EC2  |  EC2Chemin d'installation de Rescue for Windows  |  C:\$1Program Files \$1 Amazon \$1 EC2 Rescue  | 
|  \$1env : RESCUE\$1EXECUTION\$1ID EC2  |  \$1\$1 automation:EXECUTION\$1ID \$1\$1  |  7ef8008e-219b-4aca-8bb5-65e2e898e20b  | 
|  \$1env : RESCUE\$1OFFLINE\$1CURRENT\$1CONTROL\$1SET EC2  |  Chemin de l'ensemble de contrôles Windows hors connexion  |  `HKLM:\AWSTempSystem\ControlSet001`  | 
|  \$1env : RESCUE\$1OFFLINE\$1DRIVE EC2  |  Lecteur Windows hors connexion  |  D:\$1  | 
|  \$1env : RESCUE\$1OFFLINE\$1EBS\$1DEVICE EC2  |  Périphérique EBS de volume racine hors connexion  |  xvdf  | 
|  \$1env : RESCUE\$1OFFLINE\$1KERNEL\$1VER EC2  |  Version de noyau Windows hors connexion  |  6.1.7601.24214  | 
|  \$1env : RESCUE\$1OFFLINE\$1OS\$1ARCHITECTURE EC2  |  Architecture Windows hors connexion  |  AMD64  | 
|  \$1env : RESCUE\$1OFFLINE\$1OS\$1CAPTION EC2  |  Légende Windows hors connexion  |  Windows Server 2008 R2 Datacenter  | 
|  \$1env : RESCUE\$1OFFLINE\$1OS\$1TYPE EC2  |  Type de système d'exploitation Windows hors connexion  |  Serveur  | 
|  \$1env : RESCUE\$1OFFLINE\$1PROGRAM\$1FILES\$1DIR EC2  |  Chemin de répertoire de fichiers de programme Windows hors connexion  |  D:\$1Program Files  | 
|  \$1env : RESCUE\$1OFFLINE\$1PROGRAM\$1FILES\$1X86\$1DIR EC2  |  Chemin de répertoire de fichiers de programme x86 hors connexion  |  D:\$1Program Files (x86)  | 
|  \$1env : RESCUE\$1OFFLINE\$1REGISTRY\$1DIR EC2  |  Chemin de répertoire de registre Windows hors connexion  |  D:\$1Windows\$1System32\$1config  | 
|  \$1env : RESCUE\$1OFFLINE\$1SYSTEM\$1ROOT EC2  |  Chemin de répertoire racine du système Windows hors connexion  |  D:\$1Windows  | 
|  \$1env : RESCUE\$1REGION EC2  |  \$1\$1 global:REGION \$1\$1  |  us-west-1  | 
|  \$1env : RESCUE\$1S3\$1BUCKET EC2  |  \$1\$1S3BucketName \$1\$1  |  seau de démonstration amzn-s3  | 
|  \$1env : RESCUE\$1S3\$1PREFIX EC2  |  \$1\$1 S3Prefix \$1\$1  |  myprefix/  | 
|  \$1env : RESCUE\$1SOURCE\$1INSTANCE EC2  |  \$1\$1 InstanceId \$1\$1  |  i-abcdefgh123456789  | 
|  \$1script : EC2 RESCUE\$1OFFLINE\$1WINDOWS\$1INSTALL  |  Métadonnées d'installation Windows hors connexion  |  Objet Powershell client  | 

Linux :


****  

| Variable | Description | Exemple de valeur | 
| --- | --- | --- | 
|  EC2IDENTIFIANT DU COMPTE DE SECOURS  |  \$1\$1 global:ACCOUNT\$1ID \$1\$1  |  123456789012  | 
|  EC2DATE DE SAUVETAGE  |  \$1\$1 global:DATE \$1\$1  |  2018-09-07  | 
|  EC2DATE-HEURE DU SAUVETAGE  |  \$1\$1 global:DATE\$1TIME \$1\$1  |  2018-09-07\$118.09.59  | 
|  EC2RESCUE\$1RL\$1DIR EC2  |  EC2Chemin d'installation de Rescue for Linux  |  /usr/local/ec2RL-1.1.3  | 
|  EC2ID D'EXÉCUTION DU SAUVETAGE  |  \$1\$1 automation:EXECUTION\$1ID \$1\$1  |  7ef8008e-219b-4aca-8bb5-65e2e898e20b  | 
|  EC2APPAREIL DE SAUVETAGE HORS LIGNE  |  Nom du périphérique hors connexion  |  /dev/xvdf1  | 
|  EC2APPAREIL DE SAUVETAGE HORS LIGNE EBS  |  Périphérique EBS de volume racine hors connexion  |  /dev/sdf  | 
|  EC2RESCUE\$1OFFLINE\$1SYSTEM\$1ROOT  |  Point de montage du volume racine hors connexion  |  /mnt/mount  | 
|  EC2RESCUE PYTHON  |  Version de Python  |  python2.7  | 
|  EC2REGION\$1DE SAUVETAGE  |  \$1\$1 global:REGION \$1\$1  |  us-west-1  | 
|  EC2RESCUE\$1S3\$1BUCKET  |  \$1\$1S3BucketName \$1\$1  |  seau de démonstration amzn-s3  | 
|  EC2RESCUE\$1S3\$1PRÉFIXE  |  \$1\$1 S3Prefix \$1\$1  |  myprefix/  | 
|  EC2RESCUE\$1SOURCE\$1INSTANCE  |  \$1\$1 InstanceId \$1\$1  |  i-abcdefgh123456789  | 

**Type de document**

 Automatisation

**Propriétaire**

Amazon

**Plateformes**

LinuxmacOS, Windows

**Paramètres**
+ AMIPrefix

  Type : Chaîne

  Valeur par défaut : `AWSSupport-EC2Rescue`

  Description : (Facultatif) préfixe pour le nom AMI de secours.
+ AutomationAssumeRole

  Type : Chaîne

  Description : (Facultatif) Le nom de ressource Amazon (ARN) du rôle Gestion des identités et des accès AWS (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 : Chaîne

  Valeurs valides : true \$1 false

  Valeur par défaut : false

  Description : (Facultatif) Réglez-le `true` sur pour créer une AMI InstanceId après l'exécution du 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.
+ CreatePreEC2RescueBackup

  Type : Chaîne

  Valeurs valides : true \$1 false

  Valeur par défaut : false

  Description : (Facultatif) Réglez-le `true` sur pour créer une AMI de 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. 
+ EC2RescueInstanceType

  Type : Chaîne

  Valeurs valides : t2.small \$1 t2.medium \$1 t2.large \$1 t3.small \$1 t3.medium \$1 t3.large \$1 i3.large

  Par défaut : t3.medium

  Description : (Facultatif) Type d'instance EC2 pour l'instance EC2 Rescue.
+ InstanceId

  Type : Chaîne

  Description : (Obligatoire) ID de votre instance EC2. 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 : Chaîne

  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 : Chaîne

  Description : (Facultatif) nom du compartiment S3 de votre compte dans lequel vous souhaitez charger les journaux de dépannage. Assurez-vous que la politique des compartiments n'accorde pas d' read/write autorisations inutiles aux parties qui n'ont pas besoin d'accéder aux journaux collectés.
+ S3Prefix

  Type : Chaîne

  Valeur par défaut : `AWSSupport-EC2Rescue`

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

  Type : Chaîne

  Par défaut : SelectedInstanceSubnet

  Description : (Facultatif) L'ID de sous-réseau de l'instance EC2 Rescue. 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 terminaison SSM et autoriser l'accès à ceux-ci.
+ UniqueId

  Type : Chaîne

  Par défaut : \$1\$1 automation:EXECUTION\$1ID \$1\$1

  Description : (Facultatif) 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 de joindre la politique gérée par **Amazon SSMAutomation Role** IAM. En plus de cette stratégie, l'utilisateur doit avoir :

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "lambda:InvokeFunction",
                "lambda:DeleteFunction",
                "lambda:GetFunction"
            ],
            "Resource": "arn:aws:lambda:*:111122223333: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::111122223333:role/AWSSupport-EC2Rescue-*",
                "arn:aws:iam::111122223333: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

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

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

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

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

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

   1. (Créer un nouveau VPC) - Si \$1 SubnetId = CreateNew VPC\$1, exécutez `aws:createStack` pour déployer la pile Rescue EC2 CloudFormation 

   1. (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 CloudFormation pile EC2 de secours

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

1. `aws:executeAwsApi`- Mettez à jour la CloudFormation pile EC2 Rescue pour créer l'instance EC2 Rescue Helper

1. `aws:waitForAwsResourceProperty`- Attendez que la mise à jour EC2 de Rescue CloudFormation Stack soit terminée

1. `aws:executeAwsApi`- Décrivez la sortie de la CloudFormation pile EC2 Rescue pour obtenir l'ID de l'instance EC2 Rescue Helper

1. `aws:waitForAwsResourceProperty`- Attendez que l'instance EC2 Rescue Helper devienne une instance gérée

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

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

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

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

   1. (Créer une sauvegarde avant EC2 Rescue) - Si \$1 CreatePre EC2 RescueBackup = vrai\$1

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

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

1. `aws:runCommand`- Installer EC2 Rescue sur l'instance EC2 Rescue Helper

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

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

   1. (Instance Windows) :

      `aws:executeAwsApi`- Attachez le volume racine à l'instance EC2 Rescue Helper sous le nom \$1xvdf\$1

      `aws:sleep`- Dormez 10 secondes

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

   1. (Instance Linux) :

      `aws:executeAwsApi`- Attachez le volume racine à l'instance EC2 Rescue Helper sous la forme \$1/dev/sdf\$1

      `aws:sleep`- Dormez 10 secondes

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

1. `aws:changeInstanceState`- Arrêtez l'instance EC2 Rescue Helper

1. `aws:changeInstanceState`- Forcer l'arrêt de l' EC2instance Rescue Helper

1. `aws:executeAwsApi`- Détachez le volume racine de l'instance EC2 Rescue Helper

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

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

   1. (Créer une sauvegarde après le EC2 sauvetage) - Si \$1 CreatePost EC2 RescueBackup = vrai\$1

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

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

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

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

1. `aws:deleteStack`- Supprimer la CloudFormation pile EC2 Rescue

 **Sorties** 

runScriptForSortie Linux

runScriptForWindows. Sortie

preScriptBackup.ImageId

postScriptBackup.ImageId