Por que a opção "Recover this instance" (Recuperar esta instância) está desabilitada ao criar um alarme no console do EC2?

6 minuto de leitura
0

Estou tentando criar um alarme do Amazon CloudWatch no console do Amazon Elastic Compute Cloud (Amazon EC2). Quero recuperar minha instância do EC2 quando danificada por uma falha inerente do hardware e, em seguida, enviar uma notificação quando o alarme for acionado. No entanto, na página Create Alarm (Criar alarme), a opção "Recover this instance" (Recuperar esta instância) em "Take the action" (Executar a ação) está acinzentada (desabilitada). As opções de notificação de alarme estão desativadas também. Como faço para ativar essas opções novamente?

Breve descrição

Se o CloudWatch determinar que uma instância do EC2 usa volumes de armazenamento de instância, a opção Recover this instance (Recuperar esta instância) ficará desabilitada. A ação de recuperação não é compatível com instâncias do EC2 que usam volumes de armazenamento de instância, inclusive aquelas executadas com mapeamentos de dispositivos de blocos para volumes de armazenamento de instância. O CloudWatch lê os metadados associados a cada instância do EC2 para verificar se não está usando volumes de armazenamento de instância antes de ativar a ação de recuperação.

Observação: a ação Recover (Recuperar) tem suporte somente em determinados tipos de instância. Certifique-se de iniciar um tipo de instância compatível. Para obter mais informações, consulte Recuperar a sua instância. A ação de alarme de recuperação do EC2 é válida somente para a métrica StatusCheckFailed_System.

Solução

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), certifique-se de estar usando a versão mais recente da AWS CLI.

Antes de continuar, consulte Criar alarmes que interrompam, encerrem, reinicializem ou recuperem uma instância. Certifique-se de atender a todos os pré-requisitos para criar alarmes do CloudWatch.

Encontre os volumes efêmeros no armazenamento de instância nas instâncias do EC2 Linux

1.     Conecte-se à sua instância Linux.

2.     Use o comando a seguir para recuperar metadados da sua instância.

curl http://169.254.169.254/latest/meta-data/block-device-mapping/

3.     Use a saída para identificar volumes de armazenamento (cujos nomes começam com "efêmero") mapeados para a instância. Por exemplo, há dois volumes de armazenamento de instância ("ephemeral0" e "ephemeral2") nessa saída:

[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/block-device-mapping/
ami
ephemeral0
ephemeral2
root

Encontre os volumes efêmeros no armazenamento de instância nas instâncias EC2 Windows

Usando um navegador:

1.     Conecte-se à sua instância do Windows.

2.     Abra um navegador e conecte-se a:

http://169.254.169.254/latest/meta-data/block-device-mapping/

3.     Use as informações retornadas para identificar os volumes de armazenamento de instância (cujos nomes começam com "efêmero") mapeados para a instância.

Usando o Windows PowerShell:

1.     Conecte-se à sua instância do Windows no PowerShell.

2.     Execute o seguinte comando:

PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/block-device-mapping/

3.     Use a saída para identificar volumes de armazenamento (cujos nomes começam com "efêmero") mapeados para a instância. Por exemplo, há um volume de armazenamento de instância ("ephemeral0") nesta saída:

ami
ephemeral0
root
swap

Para obter mais informações, consulte Visualizar o mapeamento de dispositivos de blocos da instância para encontrar volumes de armazenamento de instância.

Encontre os volumes efêmeros no armazenamento de instância nos AMIs das instâncias EC2

Analise os mapeamentos de dispositivos de blocos para a imagem de máquina da Amazon (AMI) de sua instância do EC2. Verifique no dispositivo em bloco se há volumes de armazenamento de instância cujo campo "Bloquear Dispositivos" inclui "=ephemeral#", em que "#" seja um número inteiro de 0 a 23.

O mapeamento de dispositivos de blocos pode ocorrer mesmo se o tipo de instância não oferecer suporte oficial aos volumes de armazenamento de instância. Essa ação pode ocorrer quando você usa uma das seguintes opções para iniciar uma instância do EC2 (Windows ou Linux):

  • AWS CLI
  • Um SDK
  • Um serviço como o AWS CloudFormation 

Quando você usa o console do Amazon EC2 para iniciar um tipo de instância que não oferece suporte a volumes de armazenamento de instância, o Amazon EC2 ignora os mapeamentos de dispositivos de blocos modificados.

Você pode enumerar os volumes do EBS no mapeamento de dispositivos de blocos de uma AMI usando o console do Amazon EC2 ou o AWS CLI.

Por exemplo, o comando describe-images a seguir retorna o BlockDeviceMapping para a AMI:

aws ec2 describe-images --image-ids ami-xxxxxxxx

Exemplo de saída com volumes de armazenamento de instância cujo “VirtualName” começa com “efêmero”:

aws ec2 describe-images --image-ids ami-11112222

"BlockDeviceMappings": [
   {
      "DeviceName": "/dev/xvda",
      "Ebs": {
         "DeleteOnTermination": true,
         "SnapshotId": "snap-        ",
         "VolumeSize": 8,
         "VolumeType": "gp2",
         "Encrypted": false
      }
   },
   {
      "DeviceName": "/dev/sdb",
      "VirtualName": "ep0hemeral0"
   },
   {
      "DeviceName": "/dev/sdc",
      "VirtualName": "ephemeral2"
   }
],

Remova ou substitua quaisquer referências aos volumes de armazenamento de instância na AMI

Depois de confirmar que sua instância do EC2 usa volumes de armazenamento de instância, você deve remover ou substituir qualquer referência aos volumes de armazenamento de instância na AMI. Em seguida, você deve reiniciar a instância porque os volumes de armazenamento de instância não podem ser adicionados ou removidos de uma instância existente do EC2.

Use um dos métodos a seguir para remover ou substituir referências a volumes de armazenamento de instância:

  • Remova as referências aos volumes de armazenamento de instância da AMI. Em seguida, reinicie a instância.
  • Inicie a instância do EC2 a partir do console Amazon EC2 para substituir a AMI por tipos de instância que não suportam armazenamentos de volume de instâncias.
  • Execute a instância do EC2 a partir da AWS CLI e, em seguida, substitua manualmente cada dispositivo na AMI que faça referência a um volume de armazenamento de instância. Por exemplo, se você tiver dispositivos “/dev/sdb” e “/dev/sdc” que mapeiam volumes de armazenamento de instância, inicie sua instância do EC2 usando o comando run-instances:
aws ec2 run-instances --image-id ami-11112222 --subnet-id subnet-11112222 --instance-type t2.medium
 --key-name my_key --associate-public-ip-address --block-device-mappings
 '[{"DeviceName": "/dev/sdb","NoDevice": ""},{"DeviceName": "/dev/sdc","NoDevice": ""}]'
  • Para uma instância do EC2 lançada pelo CloudFormation, crie um modelo do CloudFormation para substituir o mapeamento de qualquer dispositivo nos volumes de armazenamento de instância. Por exemplo:
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
   "I4EY8I": {
    "Type": "AWS::EC2::Instance",
    "Properties": {
     "ImageId" : "ami-11112222",
     "InstanceType" : "t2.medium",
     "SubnetId" : "subnet-11112222",
     "KeyName" : "my_key",
   "BlockDeviceMappings" : [
     {
       "DeviceName":"/dev/sdb",
       "NoDevice": {}
     },
     {
       "DeviceName":"/dev/sdc",
       "NoDevice": {}
     }
  ]
   }
  }
 }
}
  • Para uma instância do EC2 lançada por um SDK, consulte a documentação relevante do SDK para saber como substituir dispositivos de mapeamento nos volumes de armazenamento de instância.

Informações relacionadas

Usar alarmes do Amazon CloudWatch

AWS OFICIAL
AWS OFICIALAtualizada há 5 anos