Executar a ferramenta EC2Rescue em instâncias inacessíveis - AWS Systems Manager

Executar a ferramenta EC2Rescue em instâncias inacessíveis

O EC2Rescue pode ajudar a diagnosticar e solucionar problemas em instâncias do Amazon Elastic Compute Cloud (Amazon EC2) para Linux e Windows Server. Você pode executar a ferramenta manualmente, conforme descrito em Usar o EC2Rescue para Linux Server e Usar o EC2Rescue para Windows Server. Ou você pode executar a ferramenta automaticamente usando o Systems Manager Automation e o runbook AWSSupport-ExecuteEC2Rescue. O Automation é um recurso do AWS Systems Manager. O runbook AWSSupport-ExecuteEC2Rescue foi projetado para realizar uma combinação de ações do Systems Manager, ações do AWS CloudFormation e funções do Lambda que automatizam as etapas normalmente necessárias para usar o EC2Rescue.

Você pode usar o runbook AWSSupport-ExecuteEC2Rescue para solucionar problemas e potencialmente corrigir diferentes tipos de problemas do sistema operacional (SO). Não há suporte para instâncias com volumes raiz criptografados. Veja os seguintes tópicos para uma lista completa:

Windows: consulte Rescue Action em Usar o EC2Rescue para Windows Server com a linha de comando.

Linux e macOS: alguns módulos do EC2Rescue for Linux detectam e tentam corrigir problemas. Para obter mais informações, consulte a documentação aws-ec2rescue-linux para cada módulo no GitHub.

Como funciona

Solução de problemas de uma instância com o Automation e o runbook AWSSupport-ExecuteEC2Rescue funcionam da seguinte maneira:

  • Você especifica o ID da instância inacessível e inicia o runbook.

  • O sistema cria uma VPC temporária e, em seguida, executa uma série de funções do Lambda para configurar a VPC.

  • O sistema identifica uma sub-rede para sua VPC temporária na mesma Zona de disponibilidade da sua instância original.

  • O sistema executa uma instância temporária auxiliar do , habilitada para o SSM.

  • O sistema interrompe sua instância original e cria um backup. Em seguida, atribui o volume raiz original à instância auxiliar.

  • O sistema usa o Run Command para executar o EC2Rescue na instância auxiliar. O EC2Rescue identifica e tenta corrigir problemas no volume raiz original anexado. Ao terminar, o EC2Rescue anexa o volume raiz de volta à instância original.

  • O sistema reinicia sua instância original e encerra a instância temporária. O sistema também encerra a VPC temporária e as funções Lambda criadas no início da automação.

Antes de começar

Antes de executar a automação a seguir:

  • Copie o ID da instância inacessível. Você especificará esse ID no procedimento.

  • Opcionalmente, colete o ID de uma sub-rede na mesma zona de disponibilidade como sua instância inacessível. A instância EC2Rescue será criada nessa sub-rede. Se você não especificar uma sub-rede, o Automation criará uma nova VPC temporária em sua Conta da AWS. Verifique se sua Conta da AWS tem pelo menos uma VPC disponível. Por padrão, você pode criar cinco VPCs em uma Região. Se você já tiver criado cinco VPCs na Região, a automação falhará sem fazer alterações na sua instância. Para obter mais informações sobre as cotas da Amazon VPC, consulte VPC e sub-redes no Manual do usuário da Amazon VPC.

  • Opcionalmente, você pode criar e especificar uma função do AWS Identity and Access Management (IAM) para o Automation. Se você não especificar essa função, a automação será executada no contexto do usuário que executou a automação.

Conceder permissões ao AWSSupport-EC2Rescue para realizar ações nas instâncias

O EC2Rescue precisa de permissão para realizar uma série de ações nas suas instâncias durante a automação. Essas ações invocam os serviços do AWS Lambda, IAM e Amazon EC2 para tentar corrigir problemas com as instâncias de forma segura. Se você tiver permissões em nível de administrador na sua Conta da AWS e/ou VPC, poderá executar a automação sem configurar permissões, conforme descrito nesta seção. Se não tiver permissões em nível de Administrador, você ou um administrador deverá configurar permissões usando uma das seguintes opções.

Conceder permissões usando políticas do IAM

É possível anexar a política do IAM a seguir ao seu usuário, grupo ou perfil como uma política em linha, ou criar uma nova política gerenciada do IAM e anexá-la ao seu usuário, grupo ou perfil. Para obter mais informações sobre como adicionar uma política em linha ao seu usuário, grupo ou perfil, consulte Como trabalhar com políticas em linha. Para obter mais informações sobre como criar uma nova política gerenciada, consulte Como trabalhar com políticas gerenciadas.

nota

Se você criar uma nova política gerenciada do IAM, deverá também anexar a ela a política gerenciada AmazonSSMAutomationRole para que suas instâncias possam se comunicar com a API do Systems Manager.

Política do IAM para AWSSupport-EC2Rescue

Substitua account ID (ID da conta) por suas próprias informações.

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

Conceder permissões usando um modelo do AWS CloudFormation

O AWS CloudFormation automatiza o processo de criação de políticas e funções do IAM, usando um modelo pré-configurado. Use o procedimento a seguir para criar as funções e políticas do IAM necessárias para o Automation EC2Rescue, usando o AWS CloudFormation.

Para criar as funções e políticas do IAM necessárias para o EC2Rescue
  1. Faça download de AWSSupport-EC2RescueRole.zip e extraia o arquivo AWSSupport-EC2RescueRole.json para um diretório em sua máquina local.

  2. Se sua Conta da AWS estiver em uma partição especial, edite o modelo para alterar os valores do ARN para os valores da sua partição.

    Por exemplo, para as regiões da China, altere todos os casos de arn:aws para arn:aws-cn.

  3. Faça login no AWS Management Console e abra o console AWS CloudFormation em https://console.aws.amazon.com/cloudformation.

  4. Escolha Create stack (Criar pilha), With new resources (Com novos recursos (padrão)).

  5. Na página Create stack (Criar pilha), em Prerequisite - Prepare template (Pré-requisito – Preparar modelo), escolha Template is ready (O modelo está pronto).

  6. Em Specify template (Especificar modelo), escolha Upload a template file (Fazer upload de um arquivo de modelo).

  7. Escolha Choose file (Escolher arquivo), navegue até o arquivo AWSSupport-EC2RescueRole.json e selecione-o no diretório onde foi extraído.

  8. Escolha Próximo.

  9. Na página Specify stack details (Especificar detalhes da pilha), no campo Stack name (Nome da pilha), insira um nome para identificar essa pilha e escolha Next (Próximo).

  10. (Opcional) Na área Tags, aplique um ou mais pares de nome/valor de chave de tag a pilha.

    Tags são metadados opcionais que você atribui a um recurso. Tags permitem categorizar um recurso de diferentes formas, como por finalidade, proprietário ou ambiente. Por exemplo, talvez você queira marcar uma pilha para identificar o tipo de tarefas que ela executa, os tipos de destinos ou outros recursos envolvidos e o ambiente em que ela é executada.

  11. Escolha Next (Próximo).

  12. Na página Review (Análise), role para baixo e escolha a opção I acknowledge that AWS CloudFormation might create IAM resources (Entendo que o poderá criar recursos do IAM).

  13. Selecione Criar pilha.

    O AWS CloudFormation mostrará o status CREATE_IN_PROGRESS (CRIAÇÃO_EM_ANDAMENTO) por alguns minutos. O status mudará para CREATE_COMPLETE depois que a pilha tiver sido criada. Também é possível escolher o ícone de atualização para verificar o status do processo de criação.

  14. Na lista de Stacks (Pilhas), escolha ao botão de opção ao lado da pilha que você acabou de criar e depois escolha a guia Outputs (Saídas).

  15. Anote o Value (Valor). Este é o ARN de AssumeRole. Você especificará esse ARN ao executar a automação no próximo procedimento, Executar a Automação.

Executar a Automação

Importante

A automação a seguir interrompe a instância inacessível. A interrupção da instância pode resultar em perda de dados em volumes de armazenamento de instâncias anexados (se presentes). A interrupção da instância também pode fazer com que o IP público seja alterado, caso nenhum IP elástico esteja associado.

Para executar a automação do AWSSupport-ExecuteEC2Rescue
  1. Abra o console AWS Systems Manager em https://console.aws.amazon.com/systems-manager/.

  2. No painel de navegação à esquerda, escolha Automation (Automação).

  3. Escolha Execute automation.

  4. Na seção Automation document (Documento de automação), escolha Owned by Amazon (De propriedade da Amazon) na lista.

  5. Na lista de runbooks, escolha o botão no cartão para o AWSSupport-ExecuteEC2Rescue e, depois, escolha Next (Próximo).

  6. Na página Execute automation document (Executar documento de automação), escolha Simple execution (Execução simples).

  7. Na seção Document details (Detalhes do documento), verifique se Versão do documento (Document version) está definida como a versão padrão mais recente. Por exemplo, $DEFAULT ou 3 (default) (3 (padrão)).

  8. Na seção Input parameters, especifique os parâmetros a seguir:

    1. Em UnreachableInstanceId, especifique o ID da instância inacessível.

    2. (Opcional) Em EC2RescueInstanceType, especifique um tipo de instância para a instância EC2Rescue. O tipo de instância padrão é t2.medium.

    3. Em AutomationAssumeRole, se você criou funções para esta automação usando o procedimento do AWS CloudFormation descrito anteriormente neste tópico, escolha o ARN de AssumeRole que você criou no console do AWS CloudFormation.

    4. (Opcional) Em LogDestination, especifique um bucket do S3 se desejar coletar logs no nível do sistema operacional ao solucionar problemas da instância. Os logs são enviados automaticamente para o bucket especificado.

    5. Em SubnetId, especifique uma sub-rede em uma VPC existente na mesma zona de disponibilidade da instância inacessível. Por padrão, o Systems Manager cria uma nova VPC, mas você pode especificar uma sub-rede em uma VPC existente, se quiser.

      nota

      Se a opção para especificar um bucket ou um ID de sub-rede não estiver disponível, verifique se você está usando a versão padrão mais recente do runbook.

  9. (Opcional) Na área Tags aplique um ou mais pares de nome/valor de chave de tag para ajudar a identificar a automação, por exemplo, Key=Purpose,Value=EC2Rescue.

  10. Clique em Executar.

O runbook cria uma AMI de backup como parte da automação. Todos os outros recursos criados pela automação são automaticamente excluídos, mas essa AMI permanece em sua conta. A AMI é chamada usando a convenção a seguir:

AMI de backup: AWSSupport-EC2Rescue:UnreachableInstanceId

Você pode localizar essa AMI no console do Amazon EC2 procurando o ID de execução do Automation.