Solución de problemas de CloudFormation - AWS CloudFormation

Solución de problemas de CloudFormation

Cuando utiliza AWS CloudFormation, puede encontrarse con problemas al crear, actualizar o eliminar pilas de CloudFormation. Las siguientes secciones pueden ayudarle a solucionar algunos problemas habituales que puede encontrarse.

Para preguntas generales sobre CloudFormation, consulte las Preguntas frecuentes sobre AWS CloudFormation. También puede buscar respuestas y publicar preguntas en los AWS CloudFormation forums (foros de AWS CloudFormation).

Guía para solucionar problemas

Si AWS CloudFormation no crea, actualiza o elimina la pila, puede ver mensajes de error o registros que le ayudarán a obtener más información sobre el problema. Las siguientes tareas describen los métodos generales para solucionar un problema de CloudFormation. Para obtener más información sobre errores y soluciones concretos, consulte la sección Solución de errores.

  • Utilice la CloudFormation consola para ver el estado de su pila. En la consola, puede ver una lista de los eventos de la pila cuando se crea, actualiza o elimina la pila. Desde esta lista, encuentre un evento de error y, a continuación, vea la razón del estado de dicho evento. La razón del estado podría contener un mensaje de error de AWS CloudFormation o de un determinado servicio que puede ayudarle a solucionar el problema. Para obtener más información acerca de la visualización de eventos de pila, consulte Visualización de recursos y datos de la pila de AWS CloudFormation en la AWS Management Console.

  • Para los problemas de Amazon EC2, vea los registros de cloud-init y cfn. Estos registros se publican en la instancia Amazon EC2 del directorio /var/log/. Estos logs capturan los procesos y salidas de comandos mientras AWS CloudFormation configura su instancia. Para Windows, vea los registros del servicio EC2Configure y de cfn en %ProgramFiles%\Amazon\EC2ConfigService y C:\cfn\log.

    También puede configurar su plantilla de AWS CloudFormation para que los registros se publiquen en Amazon CloudWatch, que muestra registros en la AWS Management Console para que no tenga que conectarse a la instancia Amazon EC2. Para obtener más información, consulte Ver CloudFormation registros en la consola en el blog de administración de aplicaciones.

Solución de errores

Cuando se encuentra ante los siguientes errores con su pila de AWS CloudFormation, puede utilizar las siguientes soluciones que le ayudarán a encontrar el origen de los problemas y corregirlos.

Errores al eliminar la pila

Para resolver esta situación, pruebe lo siguiente:

  • Algunos recursos deben estar vacíos para poder eliminarlos. Por ejemplo, debe eliminar todos los objetos de un bucket de Amazon S3 o eliminar todas las instancias de un grupo de seguridad de Amazon EC2 para poder eliminar el bucket o grupo de seguridad.

  • Asegúrese de que tiene los permisos de IAM necesarios para eliminar los recursos de la pila. Además de los permisos de AWS CloudFormation, debe poder utilizar los servicios subyacentes, como Amazon S3 o Amazon EC2.

  • Cuando las pilas están en el estado DELETE_FAILED porque AWS CloudFormation no ha podido eliminar un recurso, vuelva a ejecutar la eliminación con el parámetro RetainResources y especifique el recurso que AWS CloudFormation no puede eliminar. AWS CloudFormation elimina la pila sin eliminar el recurso conservado. Conservar los recursos resulta útil cuando no puede eliminar un recurso, como un bucket de S3 que contiene objetos que desea conservar, pero aun así desea eliminar la pila.

    Después de eliminar la pila, puede eliminar manualmente los recursos conservados utilizando su servicio de AWS asociado.

  • No puede eliminar pilas con protección de terminación habilitada. Si intenta eliminar una pila con protección de terminación habilitada, la eliminación falla y la pila, así como su estado, no cambian. Deshabilite la protección de terminación de la pila y, a continuación, realice la operación de eliminación de nuevo.

    Esto incluye pilas anidadas cuyas pilas raíz tienen protección de terminación habilitada. Desactive la protección de terminación de la pila raíz y vuelva a realizar la operación de eliminación. Se recomienda que no elimine pilas anidadas directamente, sino como parte de la eliminación de la pila raíz y todos sus recursos.

    Para obtener más información, consulte Proteger una pila para impedir que la eliminen accidentalmente.

  • Para todos los demás problemas, si lo tiene AWS Support, puede crear un caso AWS Support. Consulte Cómo contactar con el servicio de soporte.

Error de dependencia

Para resolver un error de dependencia, añada un atributo DependsOn a recursos que dependen de otros recursos en la plantilla. En algunos casos, debe declarar explícitamente dependencias para que AWS CloudFormation pueda crear o eliminar los recursos en el orden correcto. Por ejemplo, si crea una IP elástica y una VPC con un puerto de enlace a Internet en la misma pila, la IP elástica debe depender de la vinculación de la gateway de Internet. Para obtener información adicional, consulte Atributo DependsOn.

Error de análisis de parámetro al pasar una lista

Cuando utilice AWS Command Line Interface o AWS CloudFormation para transmitir una lista, añada el carácter de escape (\) antes de cada coma. El siguiente ejemplo muestra cómo debe especificar un parámetro de entrada al utilizar la AWS CLI.

ParameterKey=CIDR,ParameterValue='10.10.0.0/16\,10.10.0.0/24\,10.10.1.0/24'

Permisos insuficientes de IAM

Al trabajar con una pila de AWS CloudFormation no solo necesita permisos para usar AWS CloudFormation, sino que también tiene que tener permiso para utilizar los servicios subyacentes que se describen en su plantilla. Por ejemplo, si está creando un bucket de Amazon S3 o iniciando una instancia Amazon EC2 necesita permisos para Amazon S3 o Amazon EC2. Revise la política de IAM y compruebe que dispone de los permisos necesarios antes de trabajar con pilas de AWS CloudFormation. Para obtener más información, consulte, Controlar el acceso con AWS Identity and Access Management.

Valor no válido o propiedad de recurso no admitida

Al crear o actualizar una pila de AWS CloudFormation, la pila puede fallar debido a parámetros de entrada no válidos, nombres de propiedad de los recursos no admitidos o valores de propiedad de los recursos no admitidos. Para los parámetros de entrada, verificar que el recurso existe. Por ejemplo, cuando especifica un par de claves de Amazon EC2 o ID de la VPC, el recurso debe existir en su cuenta y en la región en la que está creando o actualizando su pila. Puede utilizar tipos de parámetros específicos de AWS para asegurarse de que utiliza valores válidos.

Para los nombres y valores de propiedades de recursos, actualice su plantilla para utilizar nombres y valores válidos. Para obtener una lista de todos los recursos y los nombres de las propiedades, consulte Referencia de tipos de recursos y propiedades de AWS.

Límite excedido

Verifique que no ha alcanzado un límite de recursos. Por ejemplo, el número máximo predeterminado de instancias Amazon EC2 que puede lanzar es 20. Si intenta crear un número de instancias Amazon EC2 superior al límite de su cuenta, se produce un error en la creación de instancias y recibe el error Status=start_failed. Para ver los límites de AWS predeterminados por servicio, consulte Límites de los servicios de AWS en la AWS General Reference.

Para conocer los límites de AWS CloudFormation y las estrategias para realizar cambios, consulte Cuotas de AWS CloudFormation.

Además, durante una actualización, si se sustituye un recurso, AWS CloudFormation crea un recurso nuevo antes de eliminar el antiguo. Esta sustitución podría poner su cuenta por encima del límite de recursos, lo que provocaría el error de la actualización. Puede eliminar los recursos sobrantes o solicitar un aumento del límite.

Las pilas anidadas se han quedado atascadas en UPDATE_COMPLETE_CLEANUP_IN_PROGRESS, UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS o UPDATE_ROLLBACK_IN_PROGRESS

No ha sido posible restaurar una pila anidada. Debido a posibles dependencias de recursos entre las pilas anidadas, AWS CloudFormation no comienza la limpieza de recursos de pilas anidadas hasta que se han actualizado o se han restaurado todas las pilas anidadas. Cuando se produce un error en la restauración de una pila anidada, AWS CloudFormation cancela todas las operaciones, independientemente del estado en que se encuentran las otras pilas anidadas. Una pila anidada que completó la actualización o la restauración pero no recibió una señal de AWS CloudFormation para comenzar la limpieza porque otra pila anidada no se ha restaurado está en estado UPDATE_COMPLETE_CLEANUP_IN_PROGRESS o UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS. Una pila anidada que no se ha actualizado pero no recibió una señal para comenzar la restauración está en estado UPDATE_ROLLBACK_IN_PROGRESS.

Podría producirse un error en la restauración de una pila anidada debido a cambios realizados fuera de AWS CloudFormation, cuando la plantilla de la pila no refleja de manera precisa el estado de la pila. Una pila anidada también podría fallar si un grupo de Auto Scaling en una pila anidada tuvo un periodo de tiempo de espera de señal de recursos insuficiente cuando se creó o actualizó el grupo.

Para arreglar la pila, póngase en contacto con AWS Support.

No hay actualizaciones que realizar

Para actualizar una pila de AWS CloudFormation debe enviar los cambios de los valores de los parámetros o de la plantilla a AWS CloudFormation. Sin embargo, AWS CloudFormation no reconoce algunos cambios de la plantilla como una actualización, como cambios en una política de eliminación, una política de actualización, una declaración de condiciones o una declaración de salidas. Si necesita realizar dichos cambios sin realizar ninguno más, puede añadir o modificar un atributo de metadatos para cualquiera de sus recursos.

Para obtener más información sobre la modificación de plantillas durante una actualización, consulte Modificación de una plantilla de pila.

El recurso no se estabiliza durante una operación de creación, actualización o eliminación de pila

Un recurso no respondió porque la operación superó el periodo de tiempo de espera de AWS CloudFormation o se interrumpió un servicio de AWS. Para las interrupciones de servicio, compruebe que el servicio de AWS pertinente se esté ejecutando y, a continuación, vuelva a intentar la operación de la pila.

Si los servicios de AWS se han estado ejecutado correctamente, compruebe si la pila contiene uno de los siguientes recursos:

  • AWS::AutoScaling::AutoScalingGroup para operaciones de creación, actualización y eliminación

  • AWS::CertificateManager::Certificate para operaciones de creación

  • AWS::CloudFormation::Stack para operaciones de creación, actualización y eliminación

  • AWS::ElasticSearch::Domain para operaciones de actualización

  • AWS::RDS::DBCluster para operaciones de creación y actualización

  • AWS::RDS::DBInstance para operaciones de creación, actualización y eliminación

  • AWS::Redshift::Cluster para operaciones de actualización

Las operaciones para estos recursos podrían tardar más que el periodo de tiempo de espera predeterminado. El periodo de tiempo de espera depende de los recursos y las credenciales que utilice. Para ampliar el periodo de tiempo de espera, especifique un rol de servicio al realizar la operación de la pila. Si ya está usando un rol de servicio, o si la pila contiene un recurso que no aparece en la lista, contacte el AWS Support.

Si la pila está en el estado UPDATE_ROLLBACK_FAILED, consulte Error de restauración de actualización.

El grupo de seguridad no existe en la VPC

Compruebe que el grupo de seguridad existe en la VPC que especificó. Si el grupo de seguridad existe, asegúrese de que especifica el ID del grupo de seguridad y no el nombre del grupo de seguridad. Por ejemplo, el recurso AWS::EC2::SecurityGroupIngress tiene las propiedades SourceSecurityGroupName y SourceSecurityGroupId. Para grupos de seguridad de VPC tiene que utilizar la propiedad SourceSecurityGroupId y especificar el ID del grupo de seguridad.

Error en la restauración de actualización

Un recurso dependiente no puede volver a su estado original, causando un error en la restauración (estado UPDATE_ROLLBACK_FAILED). Por ejemplo, puede tener una pila que se está restaurando a una instancia de base de datos antigua que se eliminó fuera de AWS CloudFormation. Dado que AWS CloudFormation no sabe que se eliminó la base de datos, asume que la instancia de base de datos aún existe e intenta restaurarla, lo que provoca que la restauración de la actualización falle.

Dependiendo de la causa del error, puede solucionar el error manualmente y continuar con la restauración. Al continuar con la restauración, puede devolver la pila a un estado de funcionamiento (el estado UPDATE_ROLLBACK_COMPLETE) y, a continuación, intentar actualizar la pila de nuevo. En la siguiente lista se describen las soluciones a los errores más habituales que causan los errores de restauración de la actualización:

  • Error al recibir el número necesario de señales

    Utilice el comando signal-resource para enviar manualmente el número necesario de señales con éxito al recurso que las está esperando y, a continuación, continuar restaurando la actualización. Por ejemplo, durante una restauración de actualización, las instancias en un grupo de Auto Scaling podrían no señalar el éxito dentro de la duración especificada del tiempo de espera. Envíe manualmente señales de éxito al grupo de Auto Scaling. Cuando continúa con la restauración de la actualización, AWS CloudFormation ve sus señales y procede a realizar la restauración.

  • Los cambios a un recurso se hicieron fuera de AWS CloudFormation

    Sincronice manualmente recursos para que coincidan con la plantilla de pila original y, a continuación, continúe restaurando la actualización. Por ejemplo, si eliminó manualmente un recurso que AWS CloudFormation está intentando restaurar, debe crear manualmente dicho recurso con el mismo nombre y propiedades que tenía en la pila original.

  • Permisos insuficientes

    Compruebe que tiene suficientes permisos de IAM para modificar recursos y, a continuación, continúe con la restauración de la actualización. Por ejemplo, su política de IAM podría permitirle crear un bucket de S3, pero no modificar el bucket. Añada las acciones de modificación a su política.

  • Token de seguridad no válido

    AWS CloudFormation requiere un nuevo conjunto de credenciales. No es necesario realizar ningún cambio. Continúe restaurando la actualización, lo cual actualiza las credenciales.

  • Error de limitación

    Elimine los recursos que no necesita o solicite un aumento de cuota y, a continuación, siga restaurando la actualización. Por ejemplo, si su límite de cuenta para el número de instancias EC2 es de 20 y la restauración de la actualización supera ese límite, fracasará.

  • El recurso no se estabilizó

    Un recurso no respondió porque la operación podría haber superado el periodo de tiempo de espera de AWS CloudFormation o podría haberse interrumpido un servicio de AWS. No es necesario realizar ningún cambio. Una vez que se haya completado la operación de recursos o que el servicio de AWS vuelva a estar operativo, continúe restaurando la actualización.

Para seguir restaurando una actualización puede utilizar la consola de AWS CloudFormation o la interfaz de línea de comandos (AWS CLI) de AWS. Para obtener más información, consulte Continuación de la restauración de una actualización.

Si ninguna de estas soluciones funciona, puede omitir los recursos que AWS CloudFormation no puede restaurar correctamente. Para obtener más información, consulte el parámetro ResourcesToSkip para la operación ContinueUpdateRollback en la AWS CloudFormation API Reference. AWS CloudFormation establece el estado de los recursos especificados en UPDATE_COMPLETE y continúa restaurando la pila. Después de que la restauración se haya completado, el estado de los recursos omitidos será incompatible con el estado de los recursos de la plantilla de pila. Antes de realizar otra actualización de pila, debe modificar los recursos o actualizar la pila o los recursos para que sean coherentes entre sí. De lo contrario, las actualizaciones de pilas posteriores podrían fallar provocando que la pila sea irrecuperable.

La condición de espera no recibió el número necesario de señales de una instancia Amazon EC2

Para resolver esta situación, pruebe lo siguiente:

  • Asegúrese de que la AMI que está utilizando tiene los scripts auxiliares de AWS CloudFormation instalados. Si la AMI no incluyen los scripts auxiliares, también puede descargarlos a la instancia. Para obtener más información, consulte Referencia de scripts auxiliares de CloudFormation.

  • Compruebe que el comando cfn-signal se ejecuta correctamente en la instancia. Puede ver registros, como /var/log/cloud-init.log o /var/log/cfn-init.log, para ayudarle a depurar el lanzamiento de la instancia. Puede recuperar los registros iniciando sesión en la instancia, pero deberá inhabilitar la restauración en caso de error o de lo contrario AWS CloudFormation eliminará la instancia después de producirse el error de creación de la pila. También puede publicar los registros en Amazon CloudWatch. Para Windows, puede ver los registros de cfn en C:\cfn\log y los registros de servicio de EC2Configure en %ProgramFiles%\Amazon\EC2ConfigService.

  • Compruebe que la instancia tiene una conexión a Internet. Si la instancia está en una VPC, la instancia debería poder conectarse a Internet a través de un dispositivo NAT si se encuentra en una subred privada o a través de un puerto de enlace a Internet si no se trata de una subred pública. Para probar la conexión a Internet de la instancia, pruebe a obtener acceso a una página web pública, como por ejemplo http://aws.amazon.com. Por ejemplo, puede ejecutar el siguiente comando en la instancia: Debería devolver un código de estado HTTP 200.

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

    Para obtener más información acerca de cómo configurar un dispositivo NAT, consulte NAT en la Guía del usuario de Amazon VPC.

Recurso eliminado de la pila pero no borrado

Durante una actualización de pila, CloudFormation ha eliminado un recurso de una pila pero no lo ha borrado. El recurso sigue existiendo, pero ya no es accesible a través de CloudFormation. Esto puede ocurrir durante las actualizaciones de pila donde:

  • CloudFormation necesita reemplazar un recurso existente, por lo que primero crea un nuevo recurso y, a continuación, intenta eliminar el antiguo recurso.

  • Ha eliminado el recurso de la plantilla de pila, por lo que CloudFormation intenta eliminar el recurso de la pila.

Sin embargo, puede haber casos en los que CloudFormation no puede eliminar el recurso. Por ejemplo, si el usuario no tiene permisos para eliminar un recurso de un tipo determinado.

CloudFormation intentará eliminar el antiguo recurso tres veces. Si CloudFormation no puede eliminar el recurso antiguo, lo elimina de la pila y continúa actualizando la pila. Cuando se completa la actualización de la pila, CloudFormation emite un evento de pila UPDATE_COMPLETE, pero incluye un StatusReason que indica que uno o más recursos no se pudieron eliminar. CloudFormation también emite un evento DELETE_FAILED para el recurso específico, con un StatusReason correspondiente que proporciona más detalles sobre por qué CloudFormation no se pudo eliminar el recurso.

Para resolver esta situación, elimine el recurso directamente utilizando la consola o API para el servicio subyacente.

Cómo contactar con el servicio de soporte

Si tiene AWS Support, puede crear un caso de soporte técnico en https://console.aws.amazon.com/support/home#/. Antes de contactar con el servicio de soporte, recopile la siguiente información:

  • El ID de la pila. Puede encontrar el ID de la pila en la pestaña Overview (Información general) de la consola de AWS CloudFormation. Para obtener más información, consulte Visualización de recursos y datos de la pila de AWS CloudFormation en la AWS Management Console.

    importante

    No realice cambios en la pila fuera de AWS CloudFormation. Realizar cambios en la pila fuera de AWS CloudFormation podría hacer que la pila entrara en un estado irrecuperable.

  • Cualquier mensaje de error de la pila. Para obtener más información sobre la visualización de mensajes de error de la pila, consulte la sección Guía para solucionar problemas.

  • Para los problemas de Amazon EC2, reúna los registros de cloud-init y cfn. Estos registros se publican en la instancia Amazon EC2 del directorio /var/log/. Estos logs capturan los procesos y salidas de comandos mientras se configura su instancia. Para Windows, recopile los registros del servicio EC2Configure y de cfn en %ProgramFiles%\Amazon\EC2ConfigService y C:\cfn\log.

También puede buscar respuestas y publicar preguntas en los AWS CloudFormation forums (foros de AWS CloudFormation).