Como solucionar problemas de uma instância do Amazon EC2 que é interrompida ou encerrada quando tento iniciá-la?
Quando tento iniciar minha instância do Amazon Elastic Compute Cloud (Amazon EC2), ela encerra ou não inicia.
Breve descrição
Os motivos a seguir são as causas mais comuns de uma mensagem InternalError da instância do Amazon EC2:
- Seu volume do Amazon Elastic Block Store (Amazon EBS) não está anexado à instância corretamente.
- Um volume do EBS anexado à instância está em estado de erro.
- Um volume do EBS criptografado está anexado à instância.
Se sua instância não iniciar e nenhum código de erro aparecer, execute o comando describe-instances na AWS Command Line Interface (AWS CLI). Em seguida, especifique o ID da instância. Verifique a mensagem StateReason que o comando retorna na resposta JSON.
Observação: insira todos os comandos na AWS CLI. Se você receber erros ao executar comandos da AWS CLI, verifique se você está usando a versão mais recente da AWS CLI.
Resolução
Os volumes do EBS não estão anexados à instância corretamente
Você deve anexar o volume raiz do EBS à instância como /dev/sda1 ou /dev/xvda, dependendo de qual deles está definido na API. Não é possível ter um segundo volume do EBS com um nome de dispositivo duplicado ou conflitante. Caso contrário, você não poderá interromper ou iniciar a instância. Os conflitos de nomes de dispositivos de blocos afetam somente os tipos de instância baseados em Xen (c4, m4, t2 e assim por diante). Conflitos de nomes de dispositivos de blocos não afetam as instâncias baseadas em Nitro (c5, m5, t3 e assim por diante).
1. Execute a API describe-instances para verificar a mensagem de erro StateReason e o código de erro:
$ aws ec2 describe-instances --instance-id i-xxxxxxxxxxxxxxx --region us-east-1 --query "Reservations[].Instances[].{StateReason:StateReason}" --output json
Observação: substitua us-east-1 pela sua região da AWS. Substitua i-xxxxxxxxxxxxxxx pelo ID da instância.
Se houver um conflito de nome de dispositivo, você verá uma saída semelhante à seguinte mensagem:
[ [{ "StateReason": { "Code": "Server.InternalError", "Message": "Server.InternalError: Internal error on launch" } }] ]
2. Abra o console do Amazon EC2 e selecione a instância que você não consegue iniciar.
3. Na guia Descrição, verifique o nome do dispositivo listado em Dispositivos de blocos. O campo Dispositivos de blocos exibe todos os nomes de dispositivos dos volumes anexados.
4. Verifique se o dispositivo raiz está anexado corretamente e se não há nenhum dispositivo listado com o mesmo nome ou com um nome conflitante.
5. Se houver um dispositivo com um nome de dispositivo duplicado ou conflitante, desanexe o volume conflitante e renomeie-o. Em seguida, reanexe o volume com o nome do dispositivo atualizado.
Um volume do EBS anexado está em um estado de erro
1. Execute a API describe-instances para verificar a mensagem de erro StateReason e o código de erro:
$ aws ec2 describe-instances --instance-id i-xxxxxxxxxxxxxxx --region us-east-1 --query "Reservations[].Instances[].{StateReason:StateReason}" --output json
Observação: substitua us-east-1 pela sua região da AWS. Substitua i-xxxxxxxxxxxxxxx pelo ID da instância.
Se houver um volume do EBS anexado que esteja em estado de erro, você verá uma saída semelhante à seguinte mensagem:
[ [{ "StateReason": { "Code": "Server.InternalError", "Message": "Server.InternalError: Internal error on launch" } }] ]
2. Abra o console do Amazon EC2, escolha Volumes e verifique se o status do volume é erro. Suas opções variam dependendo se o volume em estado de erro é um volume raiz ou um volume secundário.
Se o volume que está em estado de erro for um volume secundário, desanexe o volume. Agora você pode iniciar a instância.
Se o volume que está em estado de erro for um volume raiz e você tiver um snapshot do volume, conclua as seguintes etapas:
Crie um novo volume a partir do snapshot.
Anexe o novo volume à instância usando o nome do dispositivo da instância original. Inicie a instância.
Observação: se você não tiver um snapshot existente do volume raiz que esteja em estado de erro, não poderá reiniciar a instância. Você deve iniciar uma nova instância, instalar os aplicativos relevantes e, em seguida, configurá-la para substituir a instância antiga.
Os volumes anexados são criptografados e há permissões ou políticas incorretas do AWS Identity and Access Management (IAM)
1. Execute a API describe-instances para verificar a mensagem de erro StateReason e o código de erro:
$ aws ec2 describe-instances --instance-id i-xxxxxxxxxxxxxxx --region us-east-1 --query "Reservations[].Instances[].{StateReason:StateReason}" --output json
Observação: substitua us-east-1 pela sua região da AWS. Substitua i-xxxxxxxxxxxxxxx pelo ID da instância.
Se houver um volume criptografado anexado à instância e houver problemas de permissões ou políticas, você receberá um erro de cliente. Isso retorna uma saída semelhante à seguinte mensagem:
[ [{ "StateReason": { "Code": "Client.InternalError", "Message": "Client.InternalError: Client error on launch" } }] ]
2. Verifique se o usuário que está tentando iniciar a instância tem as permissões do IAM corretas. Se você executou a instância indiretamente por meio de outro serviço, como o EC2 Auto Scaling, verifique também as seguintes configurações:
- A chave do AWS Key Management Service (AWS KMS) usada para criptografar o volume está ativada.
- A chave tem as políticas de chave corretas.
Observação: para verificar se um volume está criptografado, abra o console do Amazon EC2 e selecione Volumes. Os volumes criptografados têm a opção Encrypted (Criptografados) listada na coluna Encryption (Criptografia).
Informações relacionadas
Por que não consigo iniciar ou executar minha instância do EC2?
Principais políticas no AWS KMS
Solução de problemas de execução da instância: a instância é encerrada imediatamente
Vídeos relacionados
Conteúdo relevante
- AWS OFICIALAtualizada há 9 meses
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 2 anos