

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

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

 **Descrição** 

O `AWSSupport-StartEC2RescueWorkflow` runbook executa o script codificado em base64 fornecido (Bash ou Powershell) em uma instância auxiliar criada para salvar sua instância. O volume raiz da sua instância é anexado e montado na instância auxiliar, também conhecida como instância do EC2 Rescue. Se sua instância for Windows, forneça um script do Powershell. Caso contrário, use Bash. O runbook define algumas variáveis de ambiente que você pode usar em seu script. As variáveis de ambiente contêm informações sobre a entrada que você forneceu, bem como informações sobre o volume raiz offline. O volume offline já está instalado e pronto para uso. Por exemplo, você pode salvar um arquivo de configuração de estado desejado para um volume raiz do Windows offline, ou chroot para um volume raiz do Linux offline, e executar uma correção offline.

[Execute esta automação (console)](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-StartEC2RescueWorkflow)

**Importante**  
As instâncias do Amazon EC2 criadas a partir do Marketplace Amazon Machine Images (AMIs) não são suportadas por essa automação.

 **Informações adicionais** 

Para codificar um script em base64, você pode usar Powershell ou Bash. Powershell:

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

Bash:

```
base64 PATH_TO_FILE
```

Esta é uma lista de variáveis de ambiente que você pode usar em seus scripts offline, dependendo do sistema operacional de destino

Windows:


****  

| Variável | Description | Valor de exemplo | 
| --- | --- | --- | 
|  \$1env: RESCUE\$1ACCOUNT\$1ID EC2  |  \$1\$1 global:ACCOUNT\$1ID \$1\$1  |  123456789012  | 
|  \$1 env: 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  |  EC2Caminho de instalação do Rescue for Windows  |  C:\$1Program Files\$1 Amazon\$1 EC2 Rescue  | 
|  \$1env: EC2 RESCUE\$1 RW\$1DIR EC2  |  EC2Caminho de instalação do 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  | 
|  \$1 env: RESCUE\$1OFFLINE\$1CURRENT\$1CONTROL\$1SET EC2  |  Caminho definido de controle atual do Windows offline  |  `HKLM:\AWSTempSystem\ControlSet001`  | 
|  \$1env: RESCUE\$1OFFLINE\$1DRIVE EC2  |  Letra de unidade offline do Windows  |  D:\$1  | 
|  \$1 env: RESCUE\$1OFFLINE\$1EBS\$1DEVICE EC2  |  Dispositivo EBS do volume raiz offline  |  xvdf  | 
|  \$1env: RESCUE\$1OFFLINE\$1KERNEL\$1VER EC2  |  Versão de kernel do Windows offline  |  6.1.7601.24214  | 
|  \$1env: RESCUE\$1OFFLINE\$1OS\$1ARCHITECTURE EC2  |  Arquitetura do Windows offline  |  AMD64  | 
|  \$1 env: RESCUE\$1OFFLINE\$1OS\$1CAPTION EC2  |  Legenda off-line do Windows  |  Datacenter do Windows Server 2008 R2  | 
|  \$1env: RESCUE\$1OFFLINE\$1OS\$1TYPE EC2  |  Tipo de sistema operacional Windows offline  |  Servidor  | 
|  \$1env: RESCUE\$1OFFLINE\$1PROGRAM\$1FILES\$1DIR EC2  |  Caminho de diretório de arquivos de programa do Windows offline  |  D:\$1Program Files  | 
|  \$1env: RESCUE\$1OFFLINE\$1PROGRAM\$1FILES\$1X86\$1DIR EC2  |  Caminho de diretório x86 de arquivos de programa do Windows offline  |  D:\$1Program Files (x86)  | 
|  \$1env: RESCUE\$1OFFLINE\$1REGISTRY\$1DIR EC2  |  Caminho de diretório de registro do Windows offline  |  D:\$1Windows\$1System32\$1config  | 
|  \$1 env: RESCUE\$1OFFLINE\$1SYSTEM\$1ROOT EC2  |  Caminho de diretório de raiz do sistema do Windows offline  |  D:\$1Windows  | 
|  \$1env: RESCUE\$1REGION EC2  |  \$1\$1 global:REGION \$1\$1  |  us-west-1  | 
|  \$1 env: RESCUE\$1S3\$1BUCKET EC2  |  \$1\$1S3BucketName \$1\$1  |  balde de demonstração amzn-s3-  | 
|  \$1env: RESCUE\$1S3\$1PREFIX EC2  |  \$1\$1 S3Prefix \$1\$1  |  myprefix/  | 
|  \$1 env: RESCUE\$1SOURCE\$1INSTANCE EC2  |  \$1\$1 InstanceId \$1\$1  |  i-abcdefgh123456789  | 
|  \$1 script: EC2 RESCUE\$1OFFLINE\$1WINDOWS\$1INSTALL  |  Metadados de instalação do Windows offline  |  Objeto Powershell do cliente  | 

Linux


****  

| Variável | Description | Valor de exemplo | 
| --- | --- | --- | 
|  EC2ID DA CONTA DE RESGATE  |  \$1\$1 global:ACCOUNT\$1ID \$1\$1  |  123456789012  | 
|  EC2DATA DE RESGATE  |  \$1\$1 global:DATE \$1\$1  |  2018-09-07  | 
|  EC2DATA E HORA DO RESGATE  |  \$1\$1 global:DATE\$1TIME \$1\$1  |  2018-09-07\$118.09.59  | 
|  EC2RESCUE\$1 EC2 RL\$1DIR  |  EC2Caminho de instalação do Rescue for Linux  |  /usr/local/ec2rl-1.1.3  | 
|  EC2ID DE EXECUÇÃO DE RESGATE  |  \$1\$1 automation:EXECUTION\$1ID \$1\$1  |  7ef8008e-219b-4aca-8bb5-65e2e898e20b  | 
|  EC2DISPOSITIVO DE RESGATE OFFLINE  |  Nome do dispositivo offline  |  /dev/xvdf1  | 
|  EC2RESCUE\$1OFFLINE\$1EBS\$1DEVICE  |  Dispositivo EBS do volume raiz offline  |  /dev/sdf  | 
|  EC2RESCUE\$1OFFLINE\$1SYSTEM\$1ROOT  |  Ponto de montagem de volume raiz offline  |  /mnt/mount  | 
|  EC2RESCUE\$1PYTHON  |  Versão do Python  |  python2.7  | 
|  EC2REGIÃO\$1DE RESGATE  |  \$1\$1 global:REGION \$1\$1  |  us-west-1  | 
|  EC2RESCUE\$1S3\$1BUCKET  |  \$1\$1S3BucketName \$1\$1  |  balde de demonstração amzn-s3-  | 
|  EC2PREFIXO RESCUE\$1S3  |  \$1\$1 S3Prefix \$1\$1  |  myprefix/  | 
|  EC2INSTÂNCIA DE ORIGEM DO RESCUE  |  \$1\$1 InstanceId \$1\$1  |  i-abcdefgh123456789  | 

**Tipo de documento**

Automação

**Proprietário**

Amazon

**Plataformas**

Linux, macOS, Windows

**Parâmetros**
+ AMIPrefix

  Tipo: string

  Padrão: `AWSSupport-EC2Rescue`

  Descrição: (Opcional) Um prefixo para o nome de backup da AMI.
+ AutomationAssumeRole

  Tipo: string

  Descrição: (opcional) o nome do recurso da Amazon (ARN) do perfil do AWS Identity and Access Management (IAM) que permite que o Systems Manager Automation realize ações em seu nome. Se nenhum perfil for especificado, o Systems Manager Automation usa as permissões do usuário que inicia este runbook.
+ CreatePostEC2RescueBackup

  Tipo: string

  Valores válidos: True \$1 False

  Padrão: False

  Descrição: (Opcional) Defina-o `true` para criar uma AMI de InstanceId depois de executar o script, antes de iniciá-lo. A AMI persistirá depois da conclusão da automação. É sua responsabilidade garantir acesso à AMI ou excluí-la.
+ CreatePreEC2RescueBackup

  Tipo: string

  Valores válidos: True \$1 False

  Padrão: False

  Descrição: (Opcional) Defina-o `true` para criar uma AMI de InstanceId antes de executar o script. A AMI persistirá depois da conclusão da automação. É sua responsabilidade garantir acesso à AMI ou excluí-la. 
+ EC2RescueInstanceType

  Tipo: string

  Valores válidos: t2.small \$1 t2.medium \$1 t2.large \$1 t3.small \$1 t3.medium \$1 t3.large \$1 i3.large

  Padrão: t3.medium

  Descrição: (Opcional) O tipo de instância EC2 para a instância EC2 Rescue.
+ InstanceId

  Tipo: string

  Descrição: (Obrigatório) ID de sua instância do EC2. IMPORTANTE: AWS Systems Manager A automação interrompe essa instância. Dados armazenados em volumes de armazenamento de instâncias serão perdidos. O endereço IP público será alterado se você não estiver usando um IP elástico.
+ OfflineScript

  Tipo: string

  Descrição: (obrigatório) Script codificado em Base64 a ser executado contra a instância auxiliar. Use o Bash se sua instância de origem for Linux e PowerShell se for Windows.
+ S3 BucketName

  Tipo: string

  Descrição: (Opcional) Nome do bucket do S3 em sua conta na qual você deseja carregar os logs de solução de problemas. Certifique-se de que a política do bucket não conceda read/write permissões desnecessárias às partes que não precisam acessar os registros coletados.
+ S3Prefix

  Tipo: string

  Padrão: `AWSSupport-EC2Rescue`

  Descrição: (Opcional) Um prefixo para os logs da S3.
+ SubnetId

  Tipo: string

  Padrão: SelectedInstanceSubnet

  Descrição: (Opcional) O ID da sub-rede da instância do EC2 Rescue. Por padrão, é usada a mesma sub-rede na qual a instância fornecida reside. IMPORTANTE: Se você fornecer uma sub-rede personalizada, ela deverá estar na mesma InstanceId zona de disponibilidade e permitir o acesso aos endpoints do SSM.
+ UniqueId

  Tipo: string

  Padrão: \$1\$1 automation:EXECUTION\$1ID \$1\$1

  Descrição: (opcional) um identificador exclusivo para o fluxo de trabalho.

**Permissões obrigatórias do IAM**

O parâmetro `AutomationAssumeRole` requer as seguintes ações para usar o runbook com êxito.

É recomendável que o usuário que executa a automação tenha a política gerenciada do **Amazon SSMAutomation Role** IAM anexada. Além dessa política, o usuário deve ter:

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

------

 **Etapas do documento** 

1. `aws:executeAwsApi`: descreve a instância fornecida

1. `aws:executeAwsApi`: descreve o volume raiz da instância fornecida

1. `aws:assertAwsResourceProperty`: verifica se o tipo de dispositivo de volume raiz é EBS

1. `aws:assertAwsResourceProperty`: verifica se o volume raiz não está criptografado

1. `aws:assertAwsResourceProperty`: verifica o ID de sub-rede fornecido

   1. (Use a sub-rede da instância atual) - Se \$1 SubnetId = SelectedInstanceSubnet \$1, execute `aws:createStack` para implantar a pilha do EC2 Rescue CloudFormation 

   1. (Criar nova VPC) - Se \$1 SubnetId = CreateNew VPC\$1, execute `aws:createStack` para implantar a pilha de resgate EC2 CloudFormation 

   1. (Usar sub-rede personalizada) - em todos os demais casos:

      `aws:assertAwsResourceProperty`: verifique se a sub-rede fornecida está na mesma zona de disponibilidade da instância fornecida

      `aws:createStack`- Implante a CloudFormation pilha de EC2 resgate

1. `aws:invokeLambdaFunction`: execute validação adicional de entrada

1. `aws:executeAwsApi`- Atualize a CloudFormation pilha do EC2 Rescue para criar a instância auxiliar do EC2 Rescue

1. `aws:waitForAwsResourceProperty`- Aguarde a conclusão da atualização da CloudFormation pilha de EC2 resgate

1. `aws:executeAwsApi`- Descreva a saída da CloudFormation pilha do EC2 Rescue para obter o ID da instância auxiliar do EC2 Rescue

1. `aws:waitForAwsResourceProperty`- Aguarde até que a instância auxiliar do EC2 Rescue se torne uma instância gerenciada

1. `aws:changeInstanceState`: interrompe a instância fornecida

1. `aws:changeInstanceState`: interrompe a instância fornecida

1. `aws:changeInstanceState`: força a parada da instância fornecida

1. `aws:assertAwsResourceProperty`- Verifique o valor CreatePre EC2 RescueBackup de entrada

   1. (Criar backup de EC2 pré-resgate) - Se \$1 CreatePre EC2 RescueBackup = verdadeiro\$1

   1. `aws:executeAwsApi`: crie uma AMI de backup da instância fornecida

   1. `aws:createTags`: marca o backup da AMI

1. `aws:runCommand`- Instale o EC2 Rescue na instância auxiliar do EC2 Rescue

1. `aws:executeAwsApi`: desanexa o volume raiz da instância fornecida

1. `aws:assertAwsResourceProperty`: verifica a plataforma da instância fornecida

   1. (Instância é Windows):

      `aws:executeAwsApi`- Conecte o volume raiz à instância auxiliar do EC2 Rescue como \$1xvdf\$1

      `aws:sleep`: repousa por 10 segundos

      `aws:runCommand`: executa o script offline fornecido no Powershell

   1. (Instância é Linux):

      `aws:executeAwsApi`- Conecte o volume raiz à instância auxiliar do EC2 Rescue como \$1/dev/sdf\$1

      `aws:sleep`: repousa por 10 segundos

      `aws:runCommand`: executa o script offline fornecido no Bash

1. `aws:changeInstanceState`- Pare a instância do EC2 Rescue Helper

1. `aws:changeInstanceState`- Forçar a parada da instância do EC2 Rescue Helper

1. `aws:executeAwsApi`- Separe o volume raiz da instância auxiliar do EC2 Rescue

1. `aws:executeAwsApi`: anexa o volume raiz novamente à instância fornecida

1. `aws:assertAwsResourceProperty`- Verifique o valor CreatePost EC2 RescueBackup de entrada

   1. (Criar backup EC2 pós-resgate) - Se \$1 CreatePost EC2 RescueBackup = verdadeiro\$1

   1. `aws:executeAwsApi`: crie uma AMI de backup da instância fornecida

   1. `aws:createTags`: marca o backup da AMI

1. `aws:executeAwsApi`: restaura a exclusão inicial no estado de encerramento para o volume raiz da instância fornecida

1. `aws:changeInstanceState`: restaura o estado inicial da instância fornecida (em execução/parado)

1. `aws:deleteStack`- Exclua a CloudFormation pilha de EC2 resgate

 **Saídas** 

runScriptForSaída Linux

runScriptForSaída do Windows

preScriptBackup.ImageId

postScriptBackup.ImageId