AWSSupport-StartEC2RescueWorkflow - AWS Systems Manager Referência do runbook de automação

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

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 EC2Rescue instância. 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.

Executar esta automação (console)

Importante

EC2As instâncias da Amazon 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 Descrição Valor de exemplo

$ env: _ _ID EC2RESCUE ACCOUNT

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

EC2Rescuepara o caminho de instalação do Windows

C:\Program Files\ Amazon\ EC2Rescue

$ env: _ _ EC2RESCUE EC2RW DIR

EC2Rescuepara o caminho de instalação do Windows

C:\Program Files\ Amazon\ EC2Rescue

$ env: _ _ID EC2RESCUE EXECUTION

{{automação: EXECUTION _ID}}

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

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

Caminho definido de controle atual do Windows offline

HKLM:\AWSTempSystem\ControlSet001

$ env: _ _ EC2RESCUE OFFLINE DRIVE

Letra de unidade offline do Windows

D:\

$ env: EC2RESCUE _ _ _ OFFLINE EBS DEVICE

EBSDispositivo de volume raiz off-line

xvdf

$ env: EC2RESCUE _ _ _ OFFLINE KERNEL VER

Versão de kernel do Windows offline

6.1.7601.24214

$ env: EC2RESCUE _ _OS_ OFFLINE ARCHITECTURE

Arquitetura do Windows offline

AMD64

$ env: EC2RESCUE _ _OS_ OFFLINE CAPTION

Legenda off-line do Windows

Datacenter do Windows Server 2008 R2

$ env: EC2RESCUE _ _OS_ OFFLINE TYPE

Tipo de sistema operacional Windows offline

Servidor

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

Caminho de diretório de arquivos de programa do Windows offline

D:\Program Files

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

Caminho de diretório x86 de arquivos de programa do Windows offline

D:\Program Files (x86)

$ env: EC2RESCUE _ _ _ OFFLINE REGISTRY DIR

Caminho de diretório de registro do Windows offline

D:\Windows\System32\config

$ env: EC2RESCUE _ _ _ OFFLINE SYSTEM ROOT

Caminho de diretório de raiz do sistema do Windows offline

D:\Windows

$ env: _ EC2RESCUE REGION

{{global:REGION}}

us-west-1

$ env: _S3_ EC2RESCUE BUCKET

{{S3BucketName }}

mybucket

$ env: _S3_ EC2RESCUE PREFIX

{{ S3Prefix }}

myprefix/

$ env: _ _ EC2RESCUE SOURCE INSTANCE

{{ InstanceId }}

i-abcdefgh123456789

$ script: EC2RESCUE _ _ OFFLINE _ WINDOWS INSTALL

Metadados de instalação do Windows offline

Objeto Powershell do cliente

Linux

Variável Descrição Valor de exemplo

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

EC2Rescuepara o caminho de instalação do Linux

/usr/local/ec2rl-1.1.3

EC2RESCUE_ EXECUTION _ID

{{automação: EXECUTION _ID}}

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

EC2RESCUE_OFFLINE_DEVICE

Nome do dispositivo offline

/dev/xvdf1

EC2RESCUE_OFFLINE_EBS_DEVICE

EBSDispositivo de volume raiz off-line

/dev/sdf

EC2RESCUE_OFFLINE_SYSTEM_ROOT

Ponto de montagem de volume raiz offline

/mnt/mount

EC2RESCUE_PYTHON

Versão do 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

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 AMI nome do backup.

  • AutomationAssumeRole

    Tipo: string

    Descrição: (Opcional) O Amazon Resource Name (ARN) da função AWS Identity and Access Management (IAM) que permite que o Systems Manager Automation execute as 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 | False

    Padrão: False

    Descrição: (Opcional) Defina-o true para criar um AMI of InstanceId depois de executar o script, antes de iniciá-lo. Eles AMI persistirão após a conclusão da automação. É sua responsabilidade proteger o acesso ao AMI ou excluí-lo.

  • CreatePreEC2RescueBackup

    Tipo: string

    Valores válidos: True | False

    Padrão: False

    Descrição: (Opcional) Defina-o true para criar um AMI of InstanceId antes de executar o script. Eles AMI persistirão após a conclusão da automação. É sua responsabilidade proteger o acesso ao AMI ou excluí-lo.

  • EC2RescueInstanceType

    Tipo: string

    Valores permitidos: t2.small | t2.medium | t2.large

    Padrão: t2.small

    Descrição: (Opcional) O tipo de EC2 EC2Rescue instância da instância.

  • InstanceId

    Tipo: string

    Descrição: ID (obrigatório) da sua EC2 instância. IMPORTANT: a AWS Systems Manager 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. Verifique se a política de buckets não concede permissões de leitura/gravação desnecessárias a partes que não precisam acessar os logs 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 EC2Rescue instância. Por padrão, é usada a mesma sub-rede na qual a instância fornecida reside. IMPORTANT: se você fornecer uma sub-rede personalizada, ela deverá estar na mesma InstanceId zona de disponibilidade e permitir o acesso aos SSM endpoints.

  • UniqueId

    Tipo: string

    Padrão: {{automation: EXECUTION _ID}}

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

IAMPermissões necessárias

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 IAM gerenciada A mazonSSMAutomationRole anexada. Além dessa política, o usuário deve ter:

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

Etapas do documento

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

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

  3. aws:assertAwsResourceProperty- Verifique se o tipo de dispositivo de volume raiz é EBS

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

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

    1. (Use a sub-rede da instância atual) - Se * SubnetId = SelectedInstanceSubnet *, execute aws:createStack para implantar a pilha EC2Rescue CloudFormation

    2. (Criar novoVPC) - Se * SubnetId = CreateNew VPC *, execute aws:createStack para implantar a EC2Rescue CloudFormation pilha

    3. (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 EC2Rescue CloudFormation pilha

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

  7. aws:executeAwsApi- Atualize a EC2Rescue CloudFormation pilha para criar a instância EC2Rescue auxiliar

  8. aws:waitForAwsResourceProperty- Aguarde a conclusão da atualização da EC2Rescue CloudFormation pilha

  9. aws:executeAwsApi- Descreva a saída da EC2Rescue CloudFormation pilha para obter o ID da EC2Rescue instância auxiliar

  10. aws:waitForAwsResourceProperty- Aguarde até que a instância EC2Rescue auxiliar se torne uma instância gerenciada

  11. aws:changeInstanceState: interrompe a instância fornecida

  12. aws:changeInstanceState: interrompe a instância fornecida

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

  14. aws:assertAwsResourceProperty- Verifique o valor CreatePre EC2RescueBackup de entrada

    1. (Criar EC2Rescue pré-backup) - Se * CreatePre EC2RescueBackup = verdadeiro*

    2. aws:executeAwsApi- Crie um AMI backup da instância fornecida

    3. aws:createTags- Marque o AMI backup

  15. aws:runCommand- Instale EC2Rescue na EC2Rescue instância auxiliar

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

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

    1. (Instância é Windows):

      aws:executeAwsApi- Anexe o volume raiz à instância EC2Rescue auxiliar como *xvdf*

      aws:sleep: repousa por 10 segundos

      aws:runCommand: executa o script offline fornecido no Powershell

    2. (Instância é Linux):

      aws:executeAwsApi- Anexe o volume raiz à instância EC2Rescue auxiliar como */dev/sdf*

      aws:sleep: repousa por 10 segundos

      aws:runCommand: executa o script offline fornecido no Bash

  18. aws:changeInstanceState- Pare a EC2Rescue instância auxiliar

  19. aws:changeInstanceState- Forçar a parada da EC2Rescue instância auxiliar

  20. aws:executeAwsApi- Separe o volume raiz da instância EC2Rescue auxiliar

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

  22. aws:assertAwsResourceProperty- Verifique o valor CreatePost EC2RescueBackup de entrada

    1. (Criar EC2Rescue pós-backup) - Se * CreatePost EC2RescueBackup = verdadeiro*

    2. aws:executeAwsApi- Crie um AMI backup da instância fornecida

    3. aws:createTags- Marque o AMI backup

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

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

  25. aws:deleteStack- Exclua a EC2Rescue CloudFormation pilha

Saídas

runScriptForSaída Linux

runScriptForSaída do Windows

preScriptBackup.ImageId

postScriptBackup.ImageId