Comprensión de los comportamientos de actualización de los recursos de la pila
Al enviar una actualización, AWS CloudFormation actualiza recursos en función de las diferencias entre lo que envía y la plantilla actual de la pila. Los recursos que no han cambiado se ejecutan sin interrupción durante el proceso de actualización. Para recursos actualizados, AWS CloudFormation utiliza uno de los siguientes comportamientos de actualización:
- Actualización sin interrupciones
-
AWS CloudFormation actualiza el recurso sin interrumpir el funcionamiento de dicho recurso y sin cambiar el ID físico del recurso. Por ejemplo, si actualiza cierta propiedad en un recurso AWS::CloudTrail::Trail, AWS CloudFormation actualiza el registro de seguimiento sin interrupción.
- Actualizaciones con algunas interrupciones
-
AWS CloudFormation actualiza el recurso con algunas interrupciones. Por ejemplo, si actualiza cualquier propiedad en un recurso AWS::EC2::Instance, podrían producirse algunas interrupciones en la instancia mientras AWS CloudFormation y Amazon EC2 vuelven a configurar la instancia.
- Reemplazo
-
AWS CloudFormation vuelve a crear el recurso durante una actualización, lo que también genera un nuevo ID físico. Por lo general, AWS CloudFormation crea en primer lugar el recurso de sustitución, cambia referencias de otros recursos dependientes para que apunten al recurso de sustitución y, a continuación, elimina el recurso antiguo. Por ejemplo, si actualiza la propiedad
AvailabilityZone
de un tipo de recurso AWS::EC2::Instance , AWS CloudFormation crea un recurso nuevo y sustituye el recurso de la instancia de EC2 por el nuevo.Si agregas o eliminas una propiedad que requiere un reemplazo, también se activará una actualización. Esta actualización se llevará a cabo incluso si el valor real de la propiedad no cambia.
El método que AWS CloudFormation utiliza depende de la propiedad que actualice para un tipo de recurso determinado. El comportamiento de actualización para cada propiedad se describe en la referencia de tipos de recursos de AWS.
En función del comportamiento de actualización, puede decidir cuándo modificar los recursos para reducir el impacto de estos cambios en su aplicación. En particular, puede planificar cuándo deben sustituirse los recursos durante una actualización. Por ejemplo, si actualiza la propiedad Port
de un tipo de recurso AWS::RDS::DBInstance, AWS CloudFormation sustituye la instancia de base de datos creando una nueva instancia de base de datos con la configuración del puerto actualizada y elimina la instancia de base de datos antigua. Antes de la actualización, podría pensar en hacer lo siguiente para prepararse para la sustitución de la base de datos:
-
Realice una instantánea de las actuales bases de datos.
-
Prepare una estrategia para decidir cómo tratarán una interrupción las aplicaciones que utilizan la instancia de base de datos mientras se sustituye la instancia de base de datos.
-
Asegúrese de que las aplicaciones que utilizan la instancia de base de datos consideran la configuración actualizada del puerto y cualquier otra configuración que haya realizado.
-
Utilice la instantánea de base de datos para restaurar las bases de datos en la nueva instancia de base de datos.
Este ejemplo no es exhaustivo, pero tiene por objeto darle una idea de las cosas que debe planificar cuando se sustituye un recurso durante una actualización.
nota
Si la plantilla incluye una o varias pilas anidadas, AWS CloudFormation también inicia una actualización por cada pila anidada. Esto es necesario para determinar si se han modificado las pilas anidadas. AWS CloudFormation actualiza únicamente los recursos de las pilas anidadas que tienen cambios especificados en plantillas correspondientes.