¿Cómo soluciono los problemas relacionados con la inclusión de metadatos en una instancia EC2 en CloudFormation?

5 minutos de lectura
0

He utilizado AWS::CloudFormation::Init para incluir metadatos en una instancia de Amazon Elastic Cloud Compute (Amazon EC2), pero no veo los cambios en la instancia.

Descripción breve

Los problemas con los metadatos de las instancias EC2 en una pila de AWS CloudFormation pueden producirse por las siguientes razones:

  • El script auxiliar cfn-init no se instala en una o más instancias de la pila de CloudFormation. Para resolver este problema, complete los pasos de la sección Comprobar que el script auxiliar cfn-init esté instalado.
  • La instancia no está conectada a Internet. Para resolver este problema, completa los pasos de la sección Comprobar que la instancia esté conectada a Internet.
  • La plantilla de CloudFormation contiene errores de sintaxis o valores incorrectos. Para resolver este problema, complete los pasos de la sección Buscar errores en los registros de cloud-init o cfn-init.

Importante: Antes de completar las siguientes resoluciones, establezca la opción Revertir en caso de error para la pila de CloudFormation en No.

Nota: Las siguientes resoluciones son específicas de las pilas de CloudFormation que se crean con instancias de Linux.

Resolución

Compruebe que el script auxiliar cfn-init esté instalado

Para confirmar que cfn-init está instalado en la instancia que está configurada para enviar señales a los recursos de CloudFormation:

1.    Conéctese a la instancia mediante SSH.

2.    Ejecute uno de los siguientes comandos para comprobar que cfn-init o el paquete aws-cfn-bootstrap están instalados en el directorio.

cfn-init:

$ 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

-o bien-

paquete aws-cfn-bootstrap:

$ sudo rpm -q aws-cfn-bootstrap
aws-cfn-bootstrap-1.4-34.24.amzn1.noarch

Importante: El comando anterior solo funciona en distribuciones que usan el Administrador de paquetes RPM.

Nota: De forma predeterminada, los scripts de ayuda de CloudFormation se instalan en la Amazon Machine Image (AMI) de Amazon Linux. Si los scripts de ayuda de CloudFormation no están instalados, consulte la Referencia de scripts de ayuda de CloudFormation para obtener instrucciones sobre cómo instalarlos.

Compruebe que la instancia esté conectada a Internet

Si la instancia se encuentra en una Amazon Virtual Private Cloud (Amazon VPC), puede conectarse a Internet a través de:

  • Un dispositivo NAT en una subred privada
  • Una puerta de enlace a Internet en una subred pública

Para probar la conexión a Internet de la instancia, acceda a una página web pública, como AWS, y ejecute un comando curl en la instancia. Por ejemplo:

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

Nota: Si la instancia está conectada a Internet, el comando devuelve un código de estado HTTP 200.

Si utiliza un punto de conexión de la VPC de interfaz, este debe estar ubicado en la misma región de AWS que la instancia. Además, el grupo de seguridad que se adjunta al punto de conexión de la interfaz debe permitir conexiones entrantes en el puerto 443 desde la subred privada de Amazon VPC.

Buscar errores en los registros cloud-init o cfn-init

Para buscar errores en los registros de cloud-init o cfn-init:

1.    Conéctese a su instancia mediante SSH.

2.    Busque mensajes de error o error detallados buscando las palabras clave «error» o «fallo» en los siguientes registros:

  • /var/log/cloud-init-output.log
  • /var/log/cloud-init.log
  • /var/log/cfn-init.log
  • /var/log/cfn-init-cmd.log

Para analizar todas las instancias de las palabras «error» o «fallo» en los archivos /var/log/cfn o /var/log/cloud-init, ejecute el siguiente comando:

grep -ni 'error\|failure' $(sudo find /var/log -name cfn-init\* -or -name cloud-init\*)

Nota: El comando anterior devuelve el nombre del archivo, el número de línea y el mensaje de error.

Busque cfn-init.log. Si no puede encontrarlo, entonces cfn-init no se ejecutó. También debe comprobar cloud-init-output.log y cloud-init.log para ver si se produjo un fallo al ejecutar los datos del usuario. Después de identificar el error, corríjalo en función del mensaje de error y, a continuación, vuelva a crear la pila.

Si existe cfn-init.log, entonces se ejecutó cfn-init, pero se produjo un fallo. Compruebe cfn-init.log para ver qué salió mal y arréglelo en función del mensaje de error.

Para confirmar que la propiedad UserData está configurada para ejecutar cfn-init, complete los siguientes pasos:

  1. En un editor de código, abra la plantilla de AWS CloudFormation para su pila y, a continuación, busque la sección de propiedades UserData.
  2. Compruebe si hay errores, incluidos errores de sintaxis, espacios faltantes, errores ortográficos y otros errores tipográficos.
  3. Confirme que los valores de las propiedades de pila, recurso y región sean correctos.
  4. Para la función intrínseca Fn::Join de la propiedad UserData, use la opción -v para ejecutar cfn-init en modo detallado. Consulte Plantillas de ejemplo JSON y YAML.

Información relacionada

Configuración de puntos de conexión de VPC para AWS CloudFormation

AWS::CloudFormation::Init

¿Cómo soluciono el error “Failed to receive X resource signal(s) within the specified duration” (No se recibieron X señales de recursos durante el período especificado) en AWS CloudFormation?

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años