

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# `AWSSupport-StartEC2RescueWorkflow`
<a name="automation-awssupport-startec2rescueworkflow"></a>

 **Descrizione** 

Il `AWSSupport-StartEC2RescueWorkflow` runbook esegue lo script con codifica base64 fornito (Bash o Powershell) su un'istanza helper creata per salvare l'istanza. Il volume root dell'istanza è collegato e montato sull'istanza helper, nota anche come istanza Rescue. EC2 Se l'istanza è Windows, specificare uno script Powershell. In caso contrario, utilizzare Bash. Il runbook imposta alcune variabili di ambiente che è possibile utilizzare nello script. Le variabili di ambiente contengono informazioni sull'input fornito, nonché informazioni sul volume root offline. Il volume offline è già montato e pronto all'uso. Ad esempio, è possibile salvare il file di configurazione dello stato desiderato in un volume root di Windows offline o eseguire il comando chroot e passare a un volume root di Linux offline ed eseguire la correzione offline.

[Esegui questa automazione (console)](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-StartEC2RescueWorkflow)

**Importante**  
Le istanze Amazon EC2 create da Marketplace Amazon Machine Images (AMIs) non sono supportate da questa automazione.

 **Informazioni aggiuntive** 

Per applicare la codifica base64 a uno script, è possibile utilizzare Powershell o Bash. Powershell:

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

Bash:

```
base64 PATH_TO_FILE
```

Ecco un elenco di variabili di ambiente che è possibile utilizzare negli script offline, a seconda del sistema operativo di destinazione.

Windows:


****  

| Variabile | Description | Valore di esempio | 
| --- | --- | --- | 
| $env: RESCUE\_ACCOUNT\_ID EC2 | {{ global:ACCOUNT\_ID }} | 123456789012 | 
| $env: EC2 RESCUE\_DATE | {{ global:DATE }} | 2018-09-07 | 
| $env: EC2 RESCUE\_DATE\_TIME | {{ global:DATE\_TIME }} | 2018-09-07\_18.09.59 | 
| $ env: EC2 RESCUE\_ RW\_DIR EC2 | EC2Percorso di installazione di Rescue for Windows | C:\\Program Files\\ Amazon\\ EC2 Rescue | 
| $ env: EC2 RESCUE\_ RW\_DIR EC2 | EC2Percorso di installazione di Rescue for Windows | C:\\Program Files\\ Amazon\\ EC2 Rescue | 
| $ env: RESCUE\_EXECUTION\_ID EC2 | {{ automation:EXECUTION\_ID }} | 7ef8008e-219b-4aca-8bb5-65e2e898e20b | 
| $ env: EC2 RESCUE\_OFFLINE\_CURRENT\_CONTROL\_SET | Percorso dell'insieme di controlli corrente di Windows offline | `HKLM:\AWSTempSystem\ControlSet001` | 
| $ env: EC2 RESCUE\_OFFLINE\_DRIVE | Lettera di unità di Windows offline | D:\\ | 
| $ env: EC2 RESCUE\_OFFLINE\_EBS\_DEVICE | Dispositivo EBS del volume root offline | xvdf | 
| $ env: EC2 RESCUE\_OFFLINE\_KERNEL\_VER | Versione del kernel di Windows offline | 6.1.7601.24214 | 
| $env: EC2 RESCUE\_OFFLINE\_OS\_ARCHITECTURE | Architettura di Windows offline | AMD64 | 
| $env: EC2 RESCUE\_OFFLINE\_OS\_CAPTION | Didascalia di Windows offline | Windows Server 2008 R2 Datacenter | 
| $env: EC2 RESCUE\_OFFLINE\_OS\_TYPE | Tipo di sistema operativo Windows offline | Server | 
| $env: EC2 RESCUE\_OFFLINE\_PROGRAM\_FILES\_DIR | Percorso della directory dei file di programma di Windows offline | D:\\Program Files | 
| $ env: EC2 RESCUE\_OFFLINE\_PROGRAM\_FILES\_X86\_DIR | Percorso della directory dei file di programma x86 di Windows offline | D:\\Program Files (x86) | 
| $ env: EC2 RESCUE\_OFFLINE\_REGISTRY\_DIR | Percorso della directory del Registro di sistema di Windows offline | D:\\Windows\\System32\\config | 
| $ env: EC2 RESCUE\_OFFLINE\_SYSTEM\_ROOT | Percorso della directory radice di sistema di Windows offline | D:\\Windows | 
| $env: EC2 RESCUE\_REGION | {{ global:REGION }} | us-west-1 | 
| $env: EC2 RESCUE\_S3\_BUCKET | {{S3}BucketName } | bucket dimostrativo amzn-s3 | 
| $env: RESCUE\_S3\_PREFIX EC2 | {{ S3Prefix }} | myprefix/ | 
| $env: EC2 RESCUE\_SOURCE\_INSTANCE | {{ InstanceId }} | i-abcdefgh123456789 | 
| $script: EC2 RESCUE\_OFFLINE\_WINDOWS\_INSTALL | Metadati di installazione di Windows offline | Oggetto Powershell del cliente | 

Linux:


****  

| Variabile | Description | Valore di esempio | 
| --- | --- | --- | 
| EC2RESCUE\_ACCOUNT\_ID | {{ global:ACCOUNT\_ID }} | 123456789012 | 
| EC2DATA DI SALVATAGGIO | {{ global:DATE }} | 2018-09-07 | 
| EC2DATE\_ORA DI SALVATAGGIO | {{ global:DATE\_TIME }} | 2018-09-07\_18.09.59 | 
| EC2RESCUE\_ RL\_DIR EC2 | EC2Percorso di installazione di Rescue for Linux | /usr/local/ec2rl-1.1.3 | 
| EC2RESCUE\_EXECUTION\_ID | {{ automation:EXECUTION\_ID }} | 7ef8008e-219b-4aca-8bb5-65e2e898e20b | 
| EC2DEVICE\_RESCUE OFFLINE | Nome del dispositivo offline | /dev/xvdf1 | 
| EC2DEVICE\_RESCUE\_OFFLINE\_EBS | Dispositivo EBS del volume root offline | /dev/sdf | 
| EC2RESCUE\_OFFLINE\_SYSTEM\_ROOT | Punto di montaggio del volume radice offline | /mnt/mount | 
| EC2RESCUE\_PYTHON | Versione di Python | python2.7 | 
| EC2RESCUE\_REGION | {{ global:REGION }} | us-west-1 | 
| EC2RESCUE\_S3\_BUCKET | {{S3}} BucketName  | bucket dimostrativo amzn-s3 | 
| EC2PREFISSO RESCUE\_S3 | {{ S3Prefix }} | myprefix/ | 
| EC2RESCUE\_SOURCE\_INSTANCE | {{ InstanceId }} | i-abcdefgh123456789 | 

**Tipo di documento**

Automazione

**Proprietario**

Amazon

**Piattaforme**

LinuxmacOS, Windows

**Parametri**
+ AMIPrefix

  Tipo: String

  Impostazione predefinita: `AWSSupport-EC2Rescue`

  Descrizione: (facoltativo) prefisso del nome dell'AMI di backup.
+ AutomationAssumeRole

  Tipo: String

  Descrizione: (Facoltativo) L'Amazon Resource Name (ARN) del ruolo AWS Identity and Access Management (IAM) che consente a Systems Manager Automation di eseguire le azioni per tuo conto. Se non viene specificato alcun ruolo, Systems Manager Automation utilizza le autorizzazioni dell'utente che avvia questo runbook.
+ CreatePostEC2RescueBackup

  Tipo: String

  Valori validi: true \| false

  Impostazione predefinita: false

  Descrizione: (Facoltativo) Impostalo `true` per creare un AMI InstanceId dopo aver eseguito lo script, prima di avviarlo. L'AMI verrà conservata dopo il completamento dell'automazione. È responsabilità dell'utente proteggere l'accesso all'AMI oppure eliminarla.
+ CreatePreEC2RescueBackup

  Tipo: String

  Valori validi: true \| false

  Impostazione predefinita: false

  Descrizione: (Facoltativo) Impostalo `true` per creare un AMI di InstanceId prima dell'esecuzione dello script. L'AMI verrà conservata dopo il completamento dell'automazione. È responsabilità dell'utente proteggere l'accesso all'AMI oppure eliminarla. 
+ EC2RescueInstanceType

  Tipo: String

  Valori validi: t2.small \| t2.medium \| t2.large \| t3.small \| t3.medium \| t3.large \| i3.large

  Predefinito: t3.medium

  Descrizione: (Facoltativo) Il tipo di istanza EC2 per l' EC2istanza Rescue.
+ InstanceId

  Tipo: String

  Descrizione: (obbligatorio) ID dell'istanza EC2. IMPORTANTE: AWS Systems Manager l'automazione interrompe questa istanza. I dati archiviati nei volumi dell'instance store andranno persi. L'indirizzo IP pubblico verrà modificato se non si utilizza un IP elastico.
+ OfflineScript

  Tipo: String

  Descrizione: (obbligatorio) script con codifica Base64 da eseguire sull'istanza helper. Usa Bash se la tua istanza di origine è Linux e PowerShell se è Windows.
+ S3 BucketName

  Tipo: String

  Descrizione: (facoltativo) nome del bucket S3 nell'account in cui si desidera caricare i log della risoluzione dei problemi. Assicurati che la bucket policy non conceda read/write autorizzazioni non necessarie a parti che non hanno bisogno di accedere ai log raccolti.
+ S3Prefix

  Tipo: String

  Impostazione predefinita: `AWSSupport-EC2Rescue`

  Descrizione: (facoltativo) prefisso dei log S3.
+ SubnetId

  Tipo: String

  Impostazione predefinita: SelectedInstanceSubnet

  Descrizione: (Facoltativo) L'ID di sottorete per l'istanza EC2 Rescue. Per impostazione predefinita, viene utilizzata la stessa sottorete in cui si trova l'istanza specificata. IMPORTANTE: se si fornisce una sottorete personalizzata, questa deve trovarsi nella stessa InstanceId zona di disponibilità dell'utente e deve consentire l'accesso agli endpoint SSM.
+ UniqueId

  Tipo: String

  Impostazione predefinita: {{ automation:EXECUTION\_ID }}

  Descrizione: (Facoltativo) Un identificatore univoco per l'automazione.

**Autorizzazioni IAM richieste**

Il `AutomationAssumeRole` parametro richiede le seguenti azioni per utilizzare correttamente il runbook.

Si consiglia all'utente che esegue l'automazione di allegare la policy gestita di **Amazon SSMAutomation Role** IAM. Oltre a tale policy l'utente deve disporre di quanto segue:

------
#### [ 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"
        }
    ]
}
```

------

 **Fasi del documento** 

1. `aws:executeAwsApi`- Descrivi l'istanza fornita

1. `aws:executeAwsApi`- Descrivi il volume principale dell'istanza fornita

1. `aws:assertAwsResourceProperty`- Verifica che il tipo di dispositivo del volume principale sia EBS

1. `aws:assertAwsResourceProperty`- Verifica che il volume root non sia crittografato

1. `aws:assertAwsResourceProperty`- Controlla l'ID di sottorete fornito

   1. (Usa la sottorete dell'istanza corrente) - Se \* SubnetId = SelectedInstanceSubnet \*, esegui `aws:createStack` per distribuire lo stack Rescue EC2 CloudFormation 

   1. (Crea nuovo VPC) - Se \* SubnetId = CreateNew VPC\*, esegui `aws:createStack` per distribuire lo stack Rescue EC2 CloudFormation 

   1. (Utilizzo della sottorete personalizzata): in tutti gli altri casi:

      `aws:assertAwsResourceProperty`- Verifica che la sottorete fornita si trovi nella stessa zona di disponibilità dell'istanza fornita

      `aws:createStack`- Implementa lo stack Rescue EC2 CloudFormation 

1. `aws:invokeLambdaFunction`- Esegui una convalida aggiuntiva degli input

1. `aws:executeAwsApi`- Aggiorna lo CloudFormation stack EC2 Rescue per creare l'istanza dell'helper EC2 Rescue

1. `aws:waitForAwsResourceProperty`- Attendi il completamento dell'aggiornamento dello CloudFormation stack EC2 Rescue

1. `aws:executeAwsApi`- Descrivi l'output CloudFormation dello stack EC2 Rescue per ottenere l'ID dell'istanza di EC2 Rescue helper

1. `aws:waitForAwsResourceProperty`- Attendi che l'istanza EC2 Rescue helper diventi un'istanza gestita

1. `aws:changeInstanceState`- Arresta l'istanza fornita

1. `aws:changeInstanceState`- Arresta l'istanza fornita

1. `aws:changeInstanceState`- Arresta forzatamente l'istanza fornita

1. `aws:assertAwsResourceProperty`- Controlla il valore CreatePre EC2 RescueBackup di input

   1. (Crea un backup pre- EC2 Rescue) - I\* CreatePre EC2 RescueBackup = true\*

   1. `aws:executeAwsApi`- Creare un backup AMI dell'istanza fornita

   1. `aws:createTags`- Etichetta il backup AMI

1. `aws:runCommand`- Installa EC2 Rescue sull'istanza dell'helper di EC2 Rescue

1. `aws:executeAwsApi`- Stacca il volume principale dall'istanza fornita

1. `aws:assertAwsResourceProperty`- Controlla la piattaforma di istanza fornita

   1. (L'istanza è Windows):

      `aws:executeAwsApi`- Collega il volume root all'istanza dell'helper EC2 Rescue come \*xvdf\*

      `aws:sleep`- Dormi per 10 secondi

      `aws:runCommand`- Esegui lo script offline fornito in Powershell

   1. (L'istanza è Linux):

      `aws:executeAwsApi`- Collega il volume root all'istanza dell'helper EC2 Rescue come \*/dev/sdf\*

      `aws:sleep`- Dormi per 10 secondi

      `aws:runCommand`- Esegui lo script offline fornito in Bash

1. `aws:changeInstanceState`- Arresta l'istanza dell' EC2helper Rescue

1. `aws:changeInstanceState`- Arresta forzatamente l'istanza EC2 Rescue helper

1. `aws:executeAwsApi`- Scollega il volume root dall'istanza dell'helper EC2 Rescue

1. `aws:executeAwsApi`- Ricollega il volume root all'istanza fornita

1. `aws:assertAwsResourceProperty`- Controlla il valore CreatePost EC2 RescueBackup di input

   1. (Crea un backup EC2 post-Rescue) - I\* CreatePost EC2 RescueBackup = true\*

   1. `aws:executeAwsApi`- Creare un backup AMI dell'istanza fornita

   1. `aws:createTags`- Etichetta il backup AMI

1. `aws:executeAwsApi`- Ripristina l'eliminazione iniziale allo stato di terminazione per il volume principale dell'istanza fornita

1. `aws:changeInstanceState`- Ripristina lo stato iniziale dell'istanza fornita (in esecuzione/interrotta)

1. `aws:deleteStack`- Eliminare lo stack Rescue EC2 CloudFormation 

 **Output** 

runScriptForLinux.Output

runScriptForWindows.Output

preScriptBackup.ImageId

postScriptBackup.ImageId