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:
- Use SSH para se conectar à instância.
- 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:
- Use SSH para se conectar à sua instância.
- 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.
- 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:
- Em um editor de código, abra o modelo do CloudFormation para sua pilha.
- Em UserData, verifique se há erros como erros de sintaxe, espaços ausentes, erros de ortografia e outros erros de digitação.
- Confirme se os valores das propriedades de pilha, recurso e região estão corretos.
- 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?