Continuación de la restauración de una actualización - AWS CloudFormation

Continuación de la restauración de una actualización

A veces, cuando CloudFormation intenta revertir una actualización de pila, no puede revertir todos los cambios que realizó durante el proceso de actualización. Esto se denomina estado UPDATE_ROLLBACK_FAILED. Por ejemplo, puede tener una pila que comience a restaurar una antigua instancia de base de datos que se eliminó fuera de CloudFormation. Dado que CloudFormation no sabe que la base de datos se ha eliminado, 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.

Una pila en el estado UPDATE_ROLLBACK_FAILED no se puede actualizar, pero se puede revertir a un estado de funcionamiento (UPDATE_ROLLBACK_COMPLETE). Luego de devolver la pila a su configuración originar, puede tratar de volver a actualizarla.

En la mayoría de los casos, debe solucionar el error que hace que la restauración de la actualización genere un error antes de continuar la restauración de la pila. En otros casos, puede continuar la restauración de la actualización sin ningún cambio, por ejemplo cuando se agota el tiempo de espera de una operación de pila.

nota

Si utiliza pilas anidadas, al restaurar la pila principal se intentará restaurar también todas las pilas secundarias.

Para continuar la restauración de una actualización (consola)
  1. Inicie sesión en la AWS Management Console y abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation.

  2. En la barra de navegación de la parte superior de la pantalla, elija la Región de AWS en donde se encuentra la pila.

  3. En la página Pilas, seleccione la pila que desea actualizar, elija Acciones de pila y, a continuación, elija Continuar la restauración de la actualización.

    Si no funciona ninguna de las soluciones de Solución de errores, puede utilizar la opción avanzada para omitir los recursos que CloudFormation no puede restaurar correctamente. Debe buscar y escribir los ID lógicos de los recursos que desea omitir. Especifique únicamente los recursos que han pasado al estado UPDATE_FAILED durante la operación UpdateRollback y no durante la actualización de reenvío.

    aviso

    CloudFormation establece el estado de los recursos especificados como 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 actualizar la pila o los recursos para que sean coherentes entre sí. De lo contrario, las actualizaciones de pilas posteriores podrían fallar y la pila será irrecuperable.

    Especifique el número mínimo de recursos necesarios para restaurar correctamente la pila. Por ejemplo, una actualización de recursos incorrecta podría provocar que los recursos dependientes fallaran. En este caso, no sería necesario omitir los recursos dependientes.

    Para omitir los recursos que forman parte de pilas anidadas, utilice el siguiente formato: NestedStackName.ResourceLogicalID. Si desea especificar el ID lógico de un recurso de pila (Type: AWS::CloudFormation::Stack) en la lista ResourcesToSkip, su pila integrada correspondiente debe estar en uno de los siguientes estados: DELETE_IN_PROGRESS, DELETE_COMPLETE o DELETE_FAILED.

Para continuar con la restauración de una actualización (AWS CLI)
  • Utilice el comando continue-update-rollback con la opción --stack-name para especificar el ID del pila que desea seguir restaurando.

Continúe con la reversión de las actualizaciones con fallas de la pila anidada

Cuando tiene varias pilas anidadas dentro de cada una, es posible que tenga que omitir los recursos entre varios niveles anidados para que toda la jerarquía de pilas vuelva a funcionar correctamente.

Por ejemplo, tiene una pila raíz llamada WebInfra que contiene dos pilas más pequeñas en su interior: WebInfra-Compute y WebInfra-Storage. Estas dos pilas también tienen sus propias pilas anidadas dentro de ellas.

Si algo sale mal durante una actualización y el proceso de actualización falla, es posible que toda la jerarquía de pilas acabe con el estado UPDATE_ROLLBACK_FAILED, como se muestra en el siguiente diagrama.

Un diagrama muestra una jerarquía de tres niveles de pilas anidadas.
nota

Los nombres de pilas de este ejemplo se han cortado para simplificar. CloudFormation suele generar nombres de pila secundarios, que contienen cadenas aleatorias únicas, por lo que es posible que los nombres reales no sean intuitivos.

Para poner la pila raíz en un estado de funcionamiento con el comando continue-update-rollback, debe utilizar la opción --resources-to-skip para omitir recursos que no se pudieron restaurar.

El ejemplo de continue-update-rollback a continuación reanuda una operación de reversión a partir de un intento fallido previo de una actualización de pila. En este ejemplo, la opción --resources-to-skip incluye los siguientes elementos:

  • myCustom

  • WebInfra-Compute-Asg.myAsg

  • WebInfra-Compute-LB.myLoadBalancer

  • WebInfra-Storage.DB

Para los recursos de la pila raíz, solo debe proporcionar el ID lógico, por ejemplo, myCustom. Sin embargo, para los recursos que se encuentran en las pilas anidadas, debe proporcionar el nombre de la pila anidada y su ID lógico, separados por un punto. Por ejemplo, WebInfra-Compute-Asg.myAsg.

aws cloudformation continue-update-rollback --stack-name WebInfra \ --resources-to-skip myCustom WebInfra-Compute-Asg.myAsg WebInfra-Compute-LB.myLoadBalancer WebInfra-Storage.DB
Búsqueda del nombre de pila de una pila anidada

Puede ubicarlo dentro del ID de pila o Nombre de recurso de Amazon (ARN) de una pila secundaria.

El siguiente ejemplo de ARN refiere a una pila denominada WebInfra-Storage-Z2VKC706XKXT.

arn:aws:cloudformation:us-east-1:123456789012:stack/WebInfra-Storage-Z2VKC706XKXT/ea9e7f90-54f7-11e6-a032-028f3d2330bd
Búsqueda del ID lógico de una pila anidada

Puede encontrar el ID lógico de una pila secundaria en la definición de plantilla de su principal. En el diagrama, el LogicalId de la pila secundaria WebInfra-Storage-DB es DB en su principal WebInfra-Storage.

En la consola de CloudFormation, también puede encontrar el ID lógico en la columna Logical ID (ID lógico) del recurso de pila en la pestaña Resources (Recursos) o la pestaña Events (Eventos). Para obtener más información, consulte Visualización de la información de la pila desde la consola de CloudFormation.