¿Cómo soluciono el error «Fallo interno» cuando intento crear o actualizar una pila en CloudFormation?

5 minutos de lectura
0

Quiero resolver el error «Fallo interno» en AWS CloudFormation.

Breve descripción

Si está creando o actualizando su pila de CloudFormation, puede recibir un error de «Fallo interno» cuando se produce un error en una operación en un recurso. También puede recibir este error si su pila no se implementa.

Una operación en un recurso puede fallar en las siguientes situaciones:

  • Los recursos o propiedades están configurados en valores incorrectos. Para resolver este problema, siga los pasos de la sección Implementar una pila de pruebas para encontrar los valores incorrectos de sus recursos o propiedades.
  • Error en un flujo de trabajo interno. Para resolver este problema con AWS CloudTrail, siga los pasos de la sección Encuentre las operaciones de API fallidas en los registros de eventos de CloudTrail.

Por último, es posible que su pila no se despliegue si pasa valores incorrectos a la sección Salidas de su plantilla de CloudFormation. Para resolver este error, siga los pasos de la sección Compruebe los valores en la sección Salidas de la plantilla de CloudFormation.

Nota: Los siguientes pasos se aplican únicamente a los errores de «Fallo interno» que recibe cuando intenta crear o actualizar una pila en CloudFormation.

Resolución

Implemente una pila de pruebas para encontrar los valores incorrectos de sus recursos o propiedades

Para encontrar los valores incorrectos de las propiedades o atributos de sus recursos, implemente una pila de pruebas con una plantilla de CloudFormation que incluya solo el recurso fallido.

Si su pila de pruebas se implementa correctamente, siga los pasos de la sección Encuentre las operaciones de API fallidas en los registros de eventos de CloudTrail.

Si la implementación de la pila de pruebas falla, continúe eliminando las propiedades y los atributos no necesarios de la pila de pruebas hasta que encuentre los valores incorrectos.

En la siguiente situación de ejemplo, recibe un error de «Fallo interno» cuando CloudFormation intenta crear un recurso AWS::Config::ConformancePack con AWS Config. Aparece un error porque la propiedad DeliveryS3Bucket utiliza una sintaxis incorrecta. La propiedad DeliveryS3Bucket solo acepta un nombre de bucket como valor (por ejemplo, bucketname). Una ruta de archivo que incluya el nombre del bucket no es un valor aceptable (por ejemplo, s3://bucketname).

AWSTemplateFormatVersion: 2010-09-09
Resources:
  CloudFormationCanaryPack:
    Type: AWS::Config::ConformancePack
    Properties:
      ConformancePackName: ConformancePackName
      DeliveryS3Bucket: s3://bucketname            # Incorrect value for DeliveryS3Bucket
      TemplateS3Uri: s3://bucketname/prefix

Busque las operaciones de API fallidas en sus registros de eventos de CloudTrail

1.Abra la consola de CloudTrail.

2.En el panel de navegación, seleccione Historial de eventos.

3.En Intervalo de tiempo, introduzca un intervalo de tiempo para aislar la llamada a la API fallida y, a continuación, seleccione Aplicar.

Consejo: Para la hora Desde, introduzca la hora en que el recurso entró en el estado CREATE_IN_PROGRESS o UPDATE_IN_PROGRESS en su pila de CloudFormation. Para la hora Hasta, introduzca la hora en la que falló la llamada a la API.

4.Para buscar más allá de la visualización predeterminada de eventos en el Historial de eventos, utilice filtros de atributos.

Nota: De forma predeterminada, el Historial de eventos usa un filtro de solo lectura que está establecido en false. El resultado del filtro de solo lectura muestra solo los eventos de escritura para la actividad de la API y excluye los eventos de solo lectura de la lista de eventos mostrados.

Puede usar EventName para filtrar por el nombre del evento devuelto. Si conoce la acción de la API que se utiliza para crear o actualizar un recurso, puede utilizar un filtro EventName solo para llamadas a la API específicas. Por ejemplo, la pila de CloudFormation utiliza la acción PutConformancePack de la API de AWS Config al crear un recurso AWS::Config::ConformancePack. Esto significa que solo puede filtrar para la API PutConformancePack. Puede utilizar EventSource para filtrar por el servicio de AWS que ha realizado la solicitud de API. Esto significa que puede desplazarse por una lista de fuentes de eventos y elegir el recurso adecuado que se utilizará en su plantilla de CloudFormation.

5.Para identificar la causa principal del error, revise el mensaje de error del evento devuelto.

Nota: Algunos errores de operación de la API requieren que actualice la plantilla original de CloudFormation y, a continuación, realice una implementación de prueba para confirmar que el error se ha resuelto.

Compruebe los valores en la sección Salidas de su plantilla de CloudFormation

En su plantilla de CloudFormation, confirme que los valores de la sección Salidas no contienen errores de sintaxis. Por ejemplo, elimine los espacios finales.

Si recupera los atributos de los recursos con referencias dinámicas, debe confirmar que los atributos estén disponibles durante la implementación de la pila. Para simular esto fuera de CloudFormation, haga lo siguiente:

1.Realice una llamada a la API Create* o Update* al tipo de recurso con el atributo fallido (para crearlo o modificarlo).

2.Realice una llamada a la API Describe* para recuperar los atributos actuales del recurso durante el proceso de creación o actualización de la pila.

La siguiente situación de ejemplo muestra un error interno devuelto por una pila cuando el atributo ReplicationInstancePrivateIpAddresses del recurso AWS::DMS::ReplicationInstance se pasa a Salidas.

En el siguiente ejemplo, el atributo IP privado de la instancia solo está disponible después de que el recurso ReplicationInstance haya cambiado su estado a disponible. Si el recurso ReplicationInstance no se encuentra en el estado disponible cuando la pila procese las Salidas, CloudFormation no podrá recuperar el atributo IP privado. A continuación, se produce un error en la implementación.

AWSTemplateFormatVersion: 2010-09-09
Resources:
  BasicReplicationInstance:
    Type: AWS::DMS::ReplicationInstance
    Properties:
      ReplicationInstanceClass: dms.t2.small
Outputs:
  DmsInstanceIP:
    Value: !GetAtt BasicReplicationInstance.ReplicationInstancePrivateIpAddresses

Información relacionada

Solución de problemas de AWS CloudFormation

Visualización de eventos con el historial de eventos de CloudTrail

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 3 años