Como soluciono problemas ao incluir metadados em uma instância do EC2 no CloudFormation?

4 minuto de leitura
0

No AWS CloudFormation, usei o AWS::CloudFormation::Init para incluir metadados em uma instância do Amazon Elastic Cloud Compute (Amazon EC2). No entanto, não vejo as mudanças na instância.

Resolução

Pré-requisitos: defina a opção Reverter em caso de falha para sua pilha do CloudFormation como Não.

Se você definir Reverter em caso de falha como Não e ainda não conseguir incluir metadados na instância do EC2, execute as seguintes ações.

Observação: as etapas de resolução a seguir são para pilhas do CloudFormation que você criou com uma instância Linux.

Verifique se o script auxiliar cfn-init está instalado

Para confirmar que você instalou o cfn-init na instância que está configurada para enviar sinais aos recursos do CloudFormation, conclua as seguintes etapas:

  1. Use SSH para se conectar à instância.
  2. Verifique se o pacote cfn-init ou aws-cfn-bootstrap está instalado em seu diretório.
    Para verificar se há cfn-init, execute o seguinte comando:
    sudo find / -name cfn-init/opt/aws/bin/cfn-init
    /opt/aws/apitools/cfn-init
    /opt/aws/apitools/cfn-init-1.4-34.24.amzn1/bin/cfn-init
    /var/lib/cfn-init
    Para verificar o pacote aws-cfn-bootstrap, execute o seguinte comando:
    sudo rpm -q aws-cfn-bootstrapaws-cfn-bootstrap-1.4-34.24.amzn1.noarch
    Observação: o comando anterior funciona somente em distribuições que usam o RPM Package Manager.

Os scripts auxiliares do CloudFormation são instalados no Amazon Linux Amazon Machine Image (AMI) por padrão.

Verifique se a instância está conectada à Internet

Se a instância estiver em uma Amazon Virtual Private Cloud (Amazon VPC), ela poderá se conectar à Internet por meio dos seguintes métodos:

  • Um dispositivo NAT em uma sub-rede privada
  • Um gateway de internet em uma sub-rede pública

Para testar a conexão de internet da instância, abra uma página pública, como a página inicial da AWS. Em seguida, execute um comando curl na instância. Exemplo:

curl -I https://aws.amazon.com

Se a instância estiver conectada à Internet, o comando retornará um código de status HTTP 200.

Se você usa um endpoint da VPC de interface, o endpoint deve estar na mesma região da AWS da instância. Além disso, o grupo de segurança anexado ao endpoint da interface deve permitir conexões de entrada na porta 443 a partir da sub-rede privada da Amazon VPC.

Procure erros nos logs do cloud-init ou cfn-init

Para pesquisar erros de sintaxe ou valores incorretos nos logs do cloud-init ou cfn-init, conclua as seguintes etapas:

  1. Use SSH para se conectar à sua instância.
  2. Para encontrar mensagens de erro detalhadas, pesquise as palavras-chave error ou failure nos seguintes logs:
    /var/log/cloud-init-output.log
    /var/log/cloud-init.log
    /var/log/cfn-init.log
    /var/log/cfn-init-cmd.log
    Para encontrar todas as instâncias das palavras error ou failure nos arquivos /var/log/cfn ou /var/log/cloud-init, execute o seguinte comando:
    grep -ni 'error\|failure' $(sudo find /var/log -name cfn-init\* -or -name cloud-init\*)
    Observação: o comando anterior retorna o nome do arquivo, número da linha e mensagem de erro.
  3. Use a mensagem de erro detalhada para corrigir erros e, em seguida, atualize a pilha.

Se cfn-init.log não existir, o modelo do CloudFormation não executou cfn-init.

Para confirmar que você configurou a propriedade UserData para executar cfn-init, conclua as seguintes etapas:

  1. Em um editor de código, abra o modelo do CloudFormation para sua pilha.
  2. Em UserData, verifique se há erros como erros de sintaxe, espaços ausentes, erros de ortografia e outros erros de digitação.
  3. Confirme se os valores das propriedades de pilha, recurso e região estão corretos.
  4. Para a função intrínseca Fn::Join da propriedade UserData, use -v para executar cfn-init no modo detalhado. Para obter exemplos de saídas, consulte Exemplo.

Informações relacionadas

Considerações sobre endpoints de VPC do CloudFormation

AWS::CloudFormation::Init

Como resolvo o erro “Failed to receive X resource signal(s) within the specified duration” no AWS CloudFormation?

AWS OFICIAL
AWS OFICIALAtualizada há 6 meses