Esta es la nueva Guía de referencia de plantillas de CloudFormation. Actualice sus marcadores y enlaces. Para obtener ayuda sobre cómo empezar a usar CloudFormation, consulte la Guía del usuario de AWS CloudFormation.
UpdatePolicyAtributo
Utilice el atributo UpdatePolicy para especificar la manera en que CloudFormation administra las actualizaciones de ciertos recursos durante las operaciones de actualización de pilas.
Temas
Descripción general
Con el atributo UpdatePolicy, puede controlar la manera en que los siguientes recursos se actualizan, tal como se describe a continuación:
-
AWS::AppStream::Fleet: CloudFormation puede detener e iniciar una flota, lo que da lugar al remplazo de instancias de la flota. De este modo, todas las instancias contarán con los cambios más actuales aplicados inmediatamente después de una actualización de pila.
-
AWS::AutoScaling::AutoScalingGroup – gracias a los grupos de escalado automático, puede utilizar una o más políticas de actualización para controlar la manera en que CloudFormation administra ciertas actualizaciones. Se incluyen las siguientes políticas:
-
Políticas
AutoScalingReplacingUpdateyAutoScalingRollingUpdate: CloudFormation puede sustituir el grupo de escalado automático y sus instancias con la políticaAutoScalingReplacingUpdateo sustituir únicamente las instancias con la políticaAutoScalingRollingUpdate. Estas operaciones de reemplazo se producen al hacer uno o más de los cambios que se mencionan a continuación:-
Cambie AWS::AutoScaling::LaunchConfiguration del grupo de escalado automático.
-
Cambie la propiedad
VPCZoneIdentifierdel grupo de Auto Scaling. -
Cambie la propiedad
LaunchTemplatedel grupo de Auto Scaling. -
Cambie la propiedad
PlacementGroupdel grupo de Auto Scaling. -
Actualizar un grupo de Auto Scaling que contenga instancias que no coincidan con la actual
LaunchConfiguration.
Si se especifican las dos políticas,
AutoScalingReplacingUpdateyAutoScalingRollingUpdate, al establecer la propiedadWillReplaceentrue,AutoScalingReplacingUpdatetiene preferencia. -
-
Política
AutoScalingInstanceRefresh: CloudFormation ejecuta una actualización de instancias de escalado automático al cambiar determinadas propiedades del grupo de escalado automático. En comparación conAutoScalingRollingUpdate, esta política admite políticas de mantenimiento de instancias (incluido el lanzamiento antes de la terminación), políticas de terminación, protección frente a reducción horizontal, reemplazo del volumen raíz y características adicionales de Amazon EC2 Auto Scaling. No se pueden especificarAutoScalingInstanceRefreshyAutoScalingRollingUpdateen el mismo grupo de escalado automático. Para obtener más información, consulte la Política AutoScalingInstanceRefresh. -
Política
AutoScalingScheduledAction: esta política se aplica únicamente al actualizar una pila que incluya un grupo de escalado automático con acciones programadas que escalen el grupo en momentos específicos. CloudFormation no puede modificar el tamaño mínimo o máximo ni la capacidad deseada del grupo a menos que se cambien de manera explicita en la plantilla de la pila. Esta política ayuda a prevenir cualquier actualización inesperada que pueda afectar las actividades de escalado programadas.
-
-
AWS::ElastiCache::ReplicationGroup – CloudFormation puede modificar las particiones de un grupo de replicación al agregar o eliminar particiones en vez de reemplazar el recurso en su totalidad.
-
AWS::OpenSearchService::Domain y AWS::Elasticsearch::Domain (heredado): CloudFormation puede actualizar un dominio de OpenSearch Service para una nueva versión de OpenSearch o Elasticsearch sin reemplazar el recurso en su totalidad.
-
AWS::Lambda::Alias – CloudFormation puede realizar una implementación de CodeDeploy cuando la versión cambia en el alias.
En las secciones que figuran a continuación se describen la sintaxis y las propiedades del atributo UpdatePolicy compatible con cada tipo de recurso.
Política de actualización de WorkSpaces Applications
Para detener una flota de WorkSpaces Applications antes de comenzar una actualización y reiniciarla cuando finalice, utilice la política de actualización de WorkSpaces Applications.
Sintaxis
JSON
{ "UpdatePolicy": { "StopBeforeUpdate": { "Type": "Boolean" }, "StartAfterUpdate": { "Type": "Boolean" } } }
YAML
UpdatePolicy: StopBeforeUpdate: Type:BooleanStartAfterUpdate: Type:Boolean
StopBeforeUpdate-
Detiene la flota especificada antes de la actualización.
Obligatorio: no
StartAfterUpdate-
Inicia la flota especificada después de la actualización.
Obligatorio: no
Política AutoScalingReplacingUpdate
Para sustituir un grupo de escalado automático y las instancias que contiene, utilice la política AutoScalingReplacingUpdate.
Antes de realizar una actualización, asegúrese de que dispone de suficiente capacidad de Amazon EC2 tanto para los grupos de Auto Scaling antiguos como los nuevos.
Sintaxis
JSON
"UpdatePolicy" : { "AutoScalingReplacingUpdate" : { "WillReplace" :Boolean} }
YAML
UpdatePolicy: AutoScalingReplacingUpdate: WillReplace:Boolean
Propiedades
WillReplace-
Especifica si un grupo de escalado automático y las instancias que contiene se sustituirán durante una actualización. Durante la sustitución, CloudFormation conserva el grupo antiguo hasta que termina de crear el nuevo. Si la actualización falla, CloudFormation puede volver al antiguo grupo de Auto Scaling y eliminar el nuevo grupo de escalado automático.
Aunque CloudFormation crea el nuevo grupo, no separa ni adjunta ninguna instancia. Después de crear correctamente el nuevo grupo de escalado automático, CloudFormation elimina el antiguo grupo de Auto Scaling durante el proceso de limpieza.
Cuando establezca el parámetro
WillReplace, no se olvide de especificar una Atributo CreationPolicy correspondiente. En caso de que el número mínimo de instancias (especificado por la propiedadMinSuccessfulInstancesPercent) no dé ninguna señal de éxito durante el periodo deTimeout(especificado en el atributoCreationPolicy), la actualización de la sustitución fallará y CloudFormation revertirá al grupo de escalado automático previo.Tipo: Booleano
Obligatorio: no
Política AutoScalingRollingUpdate
Para realizar una actualización continua de las instancias en un grupo de escalado automático, en vez de esperar a que las actividades de escalado sustituyan de manera gradual las instancias previas con instancias nuevas, utilice la política AutoScalingRollingUpdate. Esta política brinda flexibilidad para especificar que CloudFormation sustituya por lotes las instancias de un grupo de escalado automático o de manera integral sin reemplazar el recurso en su totalidad.
Aspectos que tener en cuenta al utilizar una política de AutoScalingRollingUpdate:
aviso
Las actualizaciones continuas no respetan la política de mantenimiento de instancias configurada en el grupo de escalado automático. Durante una actualización continua, la capacidad en buen estado puede caer por debajo del MinHealthyPercentage establecido en el grupo y CloudFormation no lanza nuevas instancias antes de terminar las existentes, independientemente del MaxHealthyPercentage. Para conservar la política de mantenimiento de instancias durante las actualizaciones de la pila, utilice Política AutoScalingInstanceRefresh en su lugar.
-
Cuando CloudFormation revierte una actualización, utiliza la configuración de
UpdatePolicyespecificada en la plantilla antes de la actualización de la pila actual. Por ejemplo, se cambia elMaxBatchSizede 1 a 10 enUpdatePolicy, se realiza una actualización de pila y esa actualización resulta en una falla. CloudFormation considerará 1, y no 10, como el tamaño de lote máximo al momento de la reversión. Para evitarlo, realice los cambios deUpdatePolicyen una actualización por separado antes de cualquier actualización del grupo de escalado automático que pueda llegar a iniciar una actualización continua. -
CloudFormation recomienda especificar la propiedad
SuspendProcessespara suspender temporalmente los procesos de Amazon EC2 Auto Scaling que puedan interferir con la actualización continua y provocar un error en la misma. Para obtener más información, consulte ¿Cómo puedo actualizar correctamente mi grupo de escalamiento automático al actualizar la pila de CloudFormation?Como alternativa, la política
AutoScalingInstanceRefreshadmite todos los procesos del grupo de escalado automático durante las actualizaciones de la pila, por lo que no es necesario suspenderlos. Si necesita que procesos como las comprobaciones de estado y el reequilibrio de zonas de disponibilidad permanezcan activos, utiliceAutoScalingInstanceRefreshen su lugar. Para obtener más información, consulte la Política AutoScalingInstanceRefresh. -
CloudFormation es compatible con el uso de los enlaces de ciclo de vida de Amazon EC2 Auto Scaling durante la ejecución o finalización de instancias. Esto le da tiempo para realizar acciones personalizadas en una instancia antes de que cambie al próximo estado. Para asegurarse de que las instancias nuevas alcancen el estado
InService, complete un enlace de ciclo de vida cuyo resultado seaCONTINUEal finalizar la acción personalizada. Si no se recibe ninguna respuesta y se agota el tiempo del enlace de ciclo de vida, de manera predeterminada, se considerará que la instancia falló y se abandonará. Si ninguna de las instancias alcanza el estadoInService, la actualización continua finalmente fallará. -
Otras características de Amazon EC2 Auto Scaling, como las políticas de terminación y la protección de la reducción horizontal, no se podrán utilizar con una actualización continua de CloudFormation. Si necesita alguna de estas características, utilice
AutoScalingInstanceRefreshen su lugar. Para obtener más información, consulte Política AutoScalingInstanceRefresh. -
Si utiliza una política de
AutoScalingRollingUpdatey elimina la configuración del grupo de ubicación, este se eliminará del grupo de escalado automático y de la plantilla de CloudFormation. Además, esto desencadena una actualización continua, por lo que las nuevas instancias no se lanzarán en un grupo de ubicación.
Sintaxis
JSON
"UpdatePolicy" : { "AutoScalingRollingUpdate" : { "MaxBatchSize" :Integer, "MinActiveInstancesPercent" :Integer, "MinInstancesInService" :Integer, "MinSuccessfulInstancesPercent" :Integer, "PauseTime" :String, "SuspendProcesses" : [List of processes], "WaitOnResourceSignals" :Boolean} }
YAML
UpdatePolicy: AutoScalingRollingUpdate: MaxBatchSize:IntegerMinActiveInstancesPercent:IntegerMinInstancesInService:IntegerMinSuccessfulInstancesPercent:IntegerPauseTime:StringSuspendProcesses: -List of processesWaitOnResourceSignals:Boolean
Propiedades
MaxBatchSize-
Especifica el número máximo de instancias que pueden reemplazarse en forma simultánea.
Valor predeterminado:
1Máximo:
100Tipo: entero
Obligatorio: no
MinActiveInstancesPercent-
Especifica el porcentaje de instancias de un grupo de escalado automático que debe estar en el estado
InServicerelativo a la capacidad deseada de esos grupos durante una actualización continua para que esta sea exitosa. Puede especificar un valor de 0 a 100. CloudFormation redondea a la décima de porcentaje más próxima. Por ejemplo, si actualiza cinco instancias con un porcentaje deInServicede 50, como mínimo, al menos tres instancias beben encontrarse en el estadoInService. Si una instancia no se cambia al estadoInServicedentro del plazo de 1 hora, CloudFormation asume que dicha instancia no se ha actualizado.La configuración de
MinActiveInstancesPercentenUpdatePolicyafectará también a las instancias lanzadas cuando la propiedadDesiredCapacitydel recurso deAWS::AutoScaling::AutoScalingGroupsupere la capacidad actual deseada para ese grupo de escalado automático.Valor predeterminado:
100Tipo: entero
Obligatorio: no
MinInstancesInService-
Especifica el número mínimo de instancias que deben estar en servicio en el grupo de escalado automático mientras CloudFormation actualiza las instancias antiguas. Este valor debe ser menor que el MaxSize del grupo de escalado automático.
aviso
Se recomienda establecer el valor de la propiedad
MinInstancesInServiceen, al menos, MinSize del grupo de escalado automático. De este modo, se evitan posibles problemas de disponibilidad durante una actualización continua, ya que no hay instancias que atiendan al tráfico de clientes.Valor predeterminado:
0Tipo: entero
Obligatorio: no
MinSuccessfulInstancesPercent-
Especifica el porcentaje de instancias en una actualización acumulativa de escalado automático que deben enviar una señal de éxito para que la actualización se realice correctamente. Puede especificar un valor de 0 a 100. CloudFormation redondea a la décima de porcentaje más próxima. Por ejemplo, si actualiza cinco instancias con un porcentaje de éxito mínimo de
50, tres instancias deben enviar una señal de éxito. Si una instancia no envía una señal en el tiempo especificado en la propiedadPauseTime, CloudFormation supone que la instancia no se ha actualizado.Es recomendable que establezca el valor de la propiedad
MinSuccessfulInstancesPercenten un valor superior a 0. Cuando la propiedadMinSuccessfulInstancesPercentse establece en 0, CloudFormation espera a que el 0 % de las instancias de capacidad estén en un estadoInService.MinSuccessfulInstancesPercentvuelve inmediatamente, antes de considerar el estado del grupo de escalado automático comoUPDATE_COMPLETEpara pasar a los recursos siguientes que se definen en la plantilla de la pila. Si se definen otros grupos de escalado automático en la plantilla de CloudFormation, se actualizarán simultáneamente. Si todos los grupos de escalado automático se implementan a la vez con el 0 % de las instancias de capacidad en un estadoInService, experimentará problemas de disponibilidad, debido a que ninguna instancia atiende el tráfico de clientes.Valor predeterminado:
100Tipo: entero
Obligatorio: no
PauseTime-
La cantidad de tiempo que CloudFormation realiza una pausa después de cambiar a un lote de instancias para dar tiempo a esas instancias para que inicien aplicaciones de software.
Especifique
PauseTimeen el formato de duración ISO8601(en el formato PT, donde cada#H#M#S#es el número de horas, minutos y segundos, respectivamente). El valor dePauseTimemáximo es una hora (PT1H).aviso
Cuando
WaitOnResourceSignalsse establece entrue,PauseTimeactúa como un valor de tiempo de espera. Determina el tiempo máximo que CloudFormation espera para recibir la cantidad requerida de señales válidas de las instancias que se reemplazan durante una actualización continua y de las nuevas instancias que se agregan al aumentar la propiedad DesiredCapacity del recursoAWS::AutoScaling::AutoScalingGroup. Si se superaPauseTimeantes de que CloudFormation reciba las señales esperadas, la actualización falla. Para obtener el mejor resultado, especifique un periodo de tiempo suficiente para que sus aplicaciones se inicien. Si hay que restaurar la actualización, un valor dePauseTimemuy corto puede hacer que la restauración falle.Valor predeterminado:
PT5M(5 minutos) cuando la propiedadWaitOnResourceSignalsestá establecida entrue. De lo contrario, no está configurado el valor predeterminado.Tipo: cadena
Obligatorio: no
SuspendProcesses-
Especifica los procesos de escalado automático que se van a suspender durante una actualización de la pila. La suspensión de procesos evita que escalado automático interfiera con una actualización de pila. Por ejemplo, puede suspender alarmas para que Amazon EC2 Auto Scaling no inicie políticas de escalado asociadas a una alarma. Para obtener valores válidos, consulte Types of processes en la Guía del usuario de Amazon EC2 Auto Scaling.
Predeterminado: no especificado
Tipo: lista de procesos de escalado automático
Obligatorio: no
WaitOnResourceSignals-
Especifica si CloudFormation espera las señales de éxito de las nuevas instancias antes de continuar con la actualización. CloudFormation espera las señales de éxito durante el tiempo de
PauseTimeespecificado.Para señalar el grupo de escalado automático, utilice el script auxiliar cfn-signal. Para los grupos de escalado automático asociados a Elastic Load Balancing, considere la posibilidad de agregar una comprobación de estado para garantizar que las instancias estén en buen estado antes de indicar que se han llevado a cabo correctamente mediante el script auxiliar cfn-init. Para ver un ejemplo, consulte el comando
verify_instance_healthen las plantillas de ejemplo para las actualizaciones acumulativas de Amazon EC2 Auto Scaling en nuestro repositorio de GitHub. Valor predeterminado:
falseTipo: Booleano
Obligatorio: condicional. Si especifica la propiedad
MinSuccessfulInstancesPercent, debe establecer la propiedadWaitOnResourceSignalsentrue.
Política AutoScalingInstanceRefresh
Para actualizar las instancias de un grupo de escalado automático mediante una actualización de instancias de escalado automático, use la política AutoScalingInstanceRefresh. Para ver la lista completa de capacidades de actualización de instancias, consulte Usar una actualización de instancias para actualizar instancias en un grupo de escalado automático en la Guía del usuario de Amazon EC2 Auto Scaling.
CloudFormation realiza una actualización de instancias solo cuando se actualiza una de las siguientes propiedades de un recurso AWS::AutoScaling::AutoScalingGroup:
LaunchTemplateMixedInstancesPolicyVPCZoneIdentifierAvailabilityZonesAvailabilityZoneIdsPlacementGroup
Cuando se utilice la política AutoScalingInstanceRefresh, tenga en cuenta los siguientes puntos:
-
No se pueden especificar las políticas
AutoScalingInstanceRefreshyAutoScalingRollingUpdateen el mismo grupo de escalado automático. Si lo hace, se producirá un error en la actualización de la pila. -
La reversión de la pila de CloudFormation es el mecanismo de reversión de
AutoScalingInstanceRefresh. Si se produce un error en la actualización de una instancia, CloudFormation revierte la pila e inicia una nueva actualización de instancias para restaurar el grupo a su configuración anterior. No puede usar la operación de la API deRollbackInstanceRefreshde escalado automático en una actualización de instancias que CloudFormation ya haya iniciado. Para revertir una actualización, use la API deCancelInstanceRefresho revierta la actualización de la pila. -
Un grupo de escalado automático solo puede ejecutar una actualización de instancias a la vez. Si se está realizando una actualización de instancias iniciada por el usuario al iniciarse una actualización de pila con la política
AutoScalingInstanceRefresh, es posible que la actualización de la pila no se realice de manera correcta. -
Si se configura la actualización de la instancia de
StrategyenReplaceRootVolume, solo se permiten los cambios en elImageIden la plantilla de lanzamiento o en la política de instancias mixtas. Otros cambios en las propiedades pueden provocar un error en la actualización de la pila. Para obtener más información, consulte Reemplazo de volúmenes de raíz durante la actualización de una instancia en la Guía del usuario de Amazon EC2 Auto Scaling. -
Cada dirección de la actualización de la pila (avance y reversión) está limitada por el tiempo de espera del recurso de CloudFormation de 36 horas.
-
Las actualizaciones de instancias de ejecución prolongada pueden superar la vida útil de las credenciales temporales que CloudFormation usa para llamar al escalado automático. Para evitarlo, se debe configurar un rol de servicio en la pila. Para obtener más información, consulte Rol de servicio de CloudFormation.
nota
La actualización de instancias no admite el script auxiliar cfn-signal. Para obtener información acerca de cómo verificar la preparación de las instancias durante una actualización de instancias, consulte Compruebe la preparación de la instancia durante una actualización de instancias.
Sintaxis
JSON
"UpdatePolicy" : { "AutoScalingInstanceRefresh" : { "Strategy" :String, "Preferences" : { "AlarmSpecification" : { "Alarms" : [List of alarm names] }, "BakeTime" :Integer, "CheckpointDelay" :Integer, "CheckpointPercentages" : [List of integers], "InstanceWarmup" :Integer, "MaxHealthyPercentage" :Integer, "MinHealthyPercentage" :Integer, "ScaleInProtectedInstances" :String, "SkipMatching" :Boolean, "StandbyInstances" :String} } }
YAML
UpdatePolicy: AutoScalingInstanceRefresh: Strategy:StringPreferences: AlarmSpecification: Alarms: -List of alarm namesBakeTime:IntegerCheckpointDelay:IntegerCheckpointPercentages: -List of integersInstanceWarmup:IntegerMaxHealthyPercentage:IntegerMinHealthyPercentage:IntegerScaleInProtectedInstances:StringSkipMatching:BooleanStandbyInstances:String
Propiedades
Strategy-
La estrategia que se utilizará para la actualización de la instancia. Los valores válidos son
RollingyReplaceRootVolume. Para obtener más información sobre la estrategia deReplaceRootVolume, consulte Reemplazo de volúmenes de raíz durante la actualización de una instancia en la Guía del usuario de Amazon EC2 Auto Scaling.Tipo: cadena
Obligatorio: sí
Preferences-
Establece las preferencias para la actualización de la instancia. Incluye el tiempo de preparación de la instancia, los porcentajes de estado mínimo y máximo, y los comportamientos que Amazon EC2 Auto Scaling utiliza si las instancias están en estado
Standbyo protegidas para evitar que se reduzcan horizontalmente. También se pueden habilitar características adicionales:Puntos de control
Alarmas de CloudWatch
Omisión de coincidencias
Tiempo procesamiento
Tipo: preferencias
Obligatorio: no
Preferencias
AlarmSpecification-
La especificación de alarma de CloudWatch. Se pueden usar las alarmas de CloudWatch para identificar cualquier problema durante la actualización de la instancia y revertir la pila si se alcanza un umbral de alarma. Para obtener más información, consulte Comenzar la actualización de una instancia con reversionamiento automático en la Guía del usuario de Amazon EC2 Auto Scaling.
Tipo: AlarmSpecification
Obligatorio: no
BakeTime-
Tiempo que se debe esperar, en segundos, al final de una actualización de instancias antes de que la actualización se considere completa.
Valor predeterminado:
0Mínimo:
0Máximo:
172800Tipo: entero
Obligatorio: no
CheckpointDelay-
La cantidad de tiempo, en segundos, que debe esperar después de alcanzar un punto de comprobación antes de continuar. Si especifica un valor para el
CheckpointPercentagespero no para laCheckpointDelay, el valor predeterminado deCheckpointDelayes3600(1 hora).Mínimo:
0Máximo:
172800Tipo: entero
Obligatorio: no
CheckpointPercentages-
Valores de umbral para cada punto de comprobación en orden ascendente. Cada número debe ser único. Para reemplazar todas las instancias del grupo de escalado automático, el último número de la matriz debe ser
100. Para obtener ejemplos de uso, consulte Agregar puntos de comprobación a una actualización de instancia en la Guía del usuario de Amazon EC2 Auto Scaling.Tipo: lista de enteros
Obligatorio: no
InstanceWarmup-
Periodo de tiempo, en segundos, durante el cual una actualización de instancias espera antes de pasar a reemplazar la siguiente instancia después de que una instancia nueva entre en el estado
InService.Si no especifica
InstanceWarmup, el escalado automático utilizará el valor de la propiedadDefaultInstanceWarmupen su lugar. Se recomienda establecer un valor paraDefaultInstanceWarmupen todos los casos de uso.Si no especifica un valor para ninguna de las propiedades, el escalado automático utiliza el valor de la propiedad
HealthCheckGracePeriod.Tipo: entero
Obligatorio: no
MaxHealthyPercentage-
Representa el porcentaje máximo del grupo que puede estar en servicio y en buen estado, o pendiente, para admitir su carga de trabajo durante el reemplazo de instancias. El valor se expresa como un porcentaje de la capacidad deseada del grupo de escalado automático. Si especifica un
MaxHealthyPercentage, también debe especificar unMinHealthyPercentage, y la diferencia entre ellos no puede ser superior a 100. Un rango mayor aumenta la cantidad de instancias que se pueden reemplazar al mismo tiempo.Predeterminado: el valor establecido en la política de mantenimiento de instancias del grupo de escalado automático, si está definido. De lo contrario,
110cuandoStrategyesRolling, o100cuandoStrategyesReplaceRootVolume.Mínimo:
100Máximo:
200Tipo: entero
Obligatorio: no
MinHealthyPercentage-
Especifica el porcentaje mínimo del grupo que debe mantenerse en servicio, en buen estado y listo para usarse para admitir la carga de trabajo y permitir que la operación continúe. El valor se expresa como un porcentaje de la capacidad deseada del grupo de escalado automático.
Predeterminado: el valor establecido en la política de mantenimiento de instancias del grupo de escalado automático, si está definido. De lo contrario,
100cuandoStrategyesRolling, o90cuandoStrategyesReplaceRootVolume.Mínimo:
0Máximo:
100Tipo: entero
Obligatorio: no
ScaleInProtectedInstances-
Elija el comportamiento que desea que utilice Amazon EC2 Auto Scaling si encuentra instancias protegidas contra la reducción horizontal. A continuación, se enumeran los valores válidos:
-
Actualizar: Amazon EC2 Auto Scaling reemplaza las instancias que están protegidas contra la reducción horizontal.
-
Ignorar: Amazon EC2 Auto Scaling ignora las instancias que están protegidas contra la reducción horizontal y continúa reemplazando las instancias que no están protegidas.
-
Esperar: Amazon EC2 Auto Scaling espera una hora para que se elimine la protección contra la reducción horizontal. De lo contrario, se producirá un error en la actualización de instancias.
Valor predeterminado:
WaitTipo: cadena
Obligatorio: no
-
SkipMatching-
Indica si la omisión de coincidencias está habilitada. Si está activada (
true), el escalado automático omite la sustitución de instancias que ya coinciden con la configuración especificada en la plantilla de pila. Para obtener más información, consulte Uso de actualización de una instancia con omisión de coincidencias en la Guía del usuario de Amazon EC2 Auto Scaling.Valor predeterminado:
trueTipo: Booleano
Obligatorio: no
StandbyInstances-
Elija el comportamiento que desea que utilice Amazon EC2 Auto Scaling si encuentra instancias en estado
Standby. A continuación, se enumeran los valores válidos:-
Terminar: Amazon EC2 Auto Scaling termina las instancias que se encuentran en
Standby. -
Ignorar: Amazon EC2 Auto Scaling ignora las instancias que se encuentran en estado
Standbyy continúa reemplazando las instancias que están en estadoInService. -
Esperar: Amazon EC2 Auto Scaling espera una hora para que se devuelvan las instancias al servicio. De lo contrario, se producirá un error en la actualización de instancias.
Valor predeterminado:
WaitTipo: cadena
Obligatorio: no
-
AlarmSpecification
Alarms-
Los nombres de una o más alarmas de CloudWatch que se van a supervisar para la actualización de la instancia. Puede especificar hasta 10 alarmas.
Tipo: lista de cadenas
Obligatorio: no
Compruebe la preparación de la instancia durante una actualización de instancias
De forma predeterminada, la actualización de instancias pasa automáticamente al siguiente conjunto de instancias cuando las instancias recién lanzadas pasan las comprobaciones de estado configuradas en su grupo de escalado automático. Estas incluyen las comprobaciones de estado de Amazon EC2 y, si están configuradas, las comprobaciones de estado de Elastic Load Balancing. Para obtener más información, consulte Comprobaciones de estado para instancias en un grupo de escalado automático en la Guía del usuario de Amazon EC2 Auto Scaling.
Si sus instancias requieren un arranque de la aplicación antes de pasar a InService, añada un enlace de ciclo de vida autoscaling:EC2_INSTANCE_LAUNCHING al grupo de escalado automático. La actualización de la instancia espera a que se complete el enlace de ciclo de vida antes de pasar al siguiente conjunto de instancias. Llame a la API CompleteLifecycleAction para completar el enlace. Se puede realizar esta llamada desde la propia instancia mediante un script de datos de usuario de la plantilla de lanzamiento o desde un servicio externo. Para obtener más información, consulte Enlaces de ciclo de vida del Amazon EC2 Auto Scaling y Compleción de una acción del ciclo de vida en un grupo de escalado automático en la Guía del usuario de Amazon EC2 Auto Scaling.
Política AutoScalingScheduledAction
Para especificar la forma en que CloudFormation administra las actualizaciones de las propiedades MinSize, MaxSize y DesiredCapacity cuando el recurso AWS::AutoScaling::AutoScalingGroup tiene una acción programada asociada, utilice la política AutoScalingScheduledAction.
Con las acciones programadas, las propiedades de tamaño de un grupo de escalado automático pueden cambiar en cualquier momento. Al actualizar una pila con un grupo de escalado automático y una acción programada, CloudFormation siempre establece los valores de la propiedad del tamaño del grupo de escalado automático en los valores que se definen en el recurso AWS::AutoScaling::AutoScalingGroup de la plantilla, incluso si se está en vigor una acción programada.
Si no desea que CloudFormation cambie cualquiera de los valores de la propiedad de tamaño del grupo cuando hay en vigor una acción programada, utilice la política de actualización AutoScalingScheduledAction y configure IgnoreUnmodifiedGroupSizeProperties en true para evitar que CloudFormation cambie las propiedades MinSize, MaxSize o DesiredCapacity a menos que haya modificado estos valores en la plantilla.
Sintaxis
JSON
"UpdatePolicy" : { "AutoScalingScheduledAction" : { "IgnoreUnmodifiedGroupSizeProperties" :Boolean} }
YAML
UpdatePolicy: AutoScalingScheduledAction: IgnoreUnmodifiedGroupSizeProperties:Boolean
Propiedades
IgnoreUnmodifiedGroupSizeProperties-
Si es
true, CloudFormation ignora las diferencias en las propiedades del tamaño del grupo entre el grupo de escalado automático actual y el grupo de escalado automático que se describe en el recursoAWS::AutoScaling::AutoScalingGroupde la plantilla durante una actualización de la pila. Si modifica cualquiera de los valores de las propiedades de tamaño del grupo en la plantilla, CloudFormation utiliza los valores modificados y actualiza el grupo de escalado automático.nota
Esta propiedad se ignora durante la reversión de una pila.
Valor predeterminado:
falseTipo: Booleano
Obligatorio: no
Política UseOnlineResharding
Para modificar las particiones del grupo de replicación añadiendo o quitando particiones, en lugar de sustituir todo el recurso AWS::ElastiCache::ReplicationGroup, utilice la política de actualización de UseOnlineResharding.
Si UseOnlineResharding está establecido en true, puede actualizar las propiedades NumNodeGroups y NodeGroupConfiguration del recurso AWS::ElastiCache::ReplicationGroup y CloudFormation actualizará esas propiedades sin interrupción. Cuando UseOnlineResharding se establece en false o no se especifica, la actualización de las propiedades NumNodeGroups y NodeGroupConfiguration tendrá como resultado que CloudFormation sustituya todo el recursoAWS::ElastiCache::ReplicationGroup.
La política de actualización UseOnlineResharding no tiene propiedades.
Aspectos a tener en cuenta a la hora de establecer la política de actualización UseOnlineResharding en true:
-
Recomendamos encarecidamente que realice las actualizaciones de las propiedades
NumNodeGroupsyNodeGroupConfigurationcomo las únicas actualizaciones en una determinada operación de actualización de pila.La actualización de la configuración de grupo de nodos de un grupo de replicación es una operación que utiliza muchos recursos. Si una actualización de la pila falla, CloudFormation no restaura los cambios de la configuración de grupo de nodos de un grupo de replicación. Sin embargo, CloudFormation revertirá las demás propiedades que se hayan cambiado como parte de la operación de actualización infructuosa.
-
Todas las actualizaciones de grupo de nodos exigen la identificación de todos los grupos de nodos.
Si especifica la propiedad
NodeGroupConfiguration, también debe especificar el NodeGroupId para cada configuración de grupo de nodos a fin de que CloudFormation actualice el número de nodos sin interrupción.Al crear un grupo de replicación, si no se especifica un ID para cada grupo de nodos, ElastiCache genera automáticamente un ID para cada grupo de nodos. Para actualizar el grupo de replicación sin interrupciones, utilice la consola de ElastiCache (https://console.aws.amazon.com/elasticache/
) o DescribeReplicationGroups para recuperar los ID de todos los grupos de nodos del grupo de replicación. A continuación, especifique el ID de cada grupo de nodos en su plantilla de pila antes de intentar añadir o eliminar particiones. nota
La práctica recomendada al crear un grupo de replicación en una plantilla de pila es incluir un ID para cada grupo de nodos que especifique.
Además, para actualizar el número de nodos sin interrupción también es necesario que haya especificado correctamente las propiedades
PrimaryAvailabilityZone,ReplicaAvailabilityZonesyReplicaCountde cadaNodeGroupConfiguration. Una vez más, puede utilizar la consola de ElastiCache (https://console.aws.amazon.com/elasticache/) o DescribeReplicationGroups para recuperar los valores reales de cada grupo de nodos y compararlos con los valores de la plantilla de pila. Puede actualizar los valores de las propiedades de los grupos de nodo como una actualización de pila independiente o como parte de la misma actualización de pila que cambia el número de grupos de nodo. Cuando se utiliza una política de actualización
UseOnlineReshardingpara actualizar el número de grupos de nodo sin interrupción, ElastiCache distribuye de manera uniforme los espacios de claves entre el número especificado de ranuras. Esto no se puede actualizar más tarde. Por lo tanto, después de actualizar el número de grupos de nodo de esta forma, debe eliminar el valor especificado para la propiedadSlotsde cadaNodeGroupConfigurationde la plantilla de pila ya que no refleja los valores reales de cada grupo de nodos. -
Los resultados reales de la eliminación de grupos de nodos pueden variar.
Cuando se especifica un valor de
NumNodeGroupsque es menor que el número actual de grupos de nodo, CloudFormation indica a ElastiCache que elimine tantos grupos de nodo como sea necesario para alcanzar el número de nodos especificado. Sin embargo, ElastiCache puede no ser capaz de eliminar la cantidad deseada de grupos de nodo. En el caso de que ElastiCache no pueda eliminar la cantidad deseada de grupos de nodo, CloudFormation genera un evento de pila que le alerta de esta situación. En los casos en los que ElastiCache no puede eliminar ningún grupo de nodos, la actualización del recurso CloudFormation produce un error.
Para obtener más información acerca de la modificación de los grupos de replicación, consulte ModifyReplicationGroupShardConfiguration en la Amazon ElastiCache API Reference.
Sintaxis
JSON
"UpdatePolicy" : { "UseOnlineResharding" :Boolean}
YAML
UpdatePolicy: UseOnlineResharding:Boolean
Política EnableVersionUpgrade
Para actualizar un dominio de OpenSearch Service a una nueva versión de OpenSearch o Elasticsearch, en lugar de reemplazar todo el recurso AWS::OpenSearchService::Domain o el recurso AWS::Elasticsearch::Domain, utilice la política de actualización EnableVersionUpgrade.
Si EnableVersionUpgrade se establece en true, puede actualizar la propiedad EngineVersion del recurso AWS::OpenSearchService::Domain (o la propiedad ElasticsearchVersion del recurso AWS::Elasticsearch::Domain heredado) y CloudFormation actualizará dicha propiedad sin interrupción. Cuando EnableVersionUpgrade se establece en false o no se especifica, la actualización de los resultados de la propiedad EngineVersion o ElasticsearchVersion hará que CloudFormation sustituya todo el recurso AWS::OpenSearchService::Domain/AWS::Elasticsearch::Domain.
La política de actualización EnableVersionUpgrade no tiene propiedades.
Para obtener más información, consulte Upgrading OpenSearch Service domains en la Guía para desarrolladores de Amazon OpenSearch Service.
Sintaxis
JSON
"UpdatePolicy" : { "EnableVersionUpgrade" :Boolean}
YAML
UpdatePolicy: EnableVersionUpgrade:Boolean
Política CodeDeployLambdaAliasUpdate
Para realizar una implementación de CodeDeploy cuando la versión cambia en un recurso AWS::Lambda::Alias, utilice la política de actualización CodeDeployLambdaAliasUpdate.
Sintaxis
JSON
"UpdatePolicy" : { "CodeDeployLambdaAliasUpdate" : { "AfterAllowTrafficHook" :String, "ApplicationName" :String, "BeforeAllowTrafficHook" :String, "DeploymentGroupName" :String} }
YAML
UpdatePolicy: CodeDeployLambdaAliasUpdate: AfterAllowTrafficHook:StringApplicationName:StringBeforeAllowTrafficHook:StringDeploymentGroupName:String
Propiedades
AfterAllowTrafficHook-
El nombre de la función de Lambda que se ejecuta después de que finalice el enrutamiento del tráfico.
Obligatorio: no
Tipo: cadena
ApplicationName-
El nombre de la aplicación de CodeDeploy.
Obligatorio: sí
Tipo: cadena
BeforeAllowTrafficHook-
El nombre de la función de Lambda que se ejecuta antes de que comience el enrutamiento del tráfico.
Obligatorio: no
Tipo: cadena
DeploymentGroupName-
El nombre del grupo de implementaciones CodeDeploy. Aquí es donde se establece la política de cambio de tráfico.
Obligatorio: sí
Tipo: cadena
Para conocer un ejemplo que especifique el atributo UpdatePolicy de un recurso AWS::Lambda::Alias, consulte Política de actualización de alias de Lambda.
Ejemplos
Los siguientes ejemplos muestran cómo añadir una política de actualización a un grupo de escalado automático y cómo mantener la disponibilidad a la hora de actualizar los metadatos.
Agregue una UpdatePolicy a un grupo de escalado grupo de escalado automático
En el ejemplo siguiente, se muestra cómo añadir una política de actualización. Durante una actualización, el grupo de escalado automático actualiza instancias en lotes de dos y mantiene un mínimo de una instancia en servicio. Dado que la marca WaitOnResourceSignals está establecida, el grupo de escalado automático espera a que se añadan nuevas instancias al grupo. Las nuevas instancias deben señalizar el grupo de escalado automático antes de actualizar el siguiente lote de instancias.
JSON
"ASG" : { "Type":"AWS::AutoScaling::AutoScalingGroup", "Properties":{ "VPCZoneIdentifier":[ "subnetIdAz1", "subnetIdAz2", "subnetIdAz3" ], "LaunchTemplate":{ "LaunchTemplateId":{ "Ref":"logicalName" }, "Version":{ "Fn::GetAtt":[ "logicalName", "LatestVersionNumber" ] } }, "MaxSize":"4", "MinSize":"1" }, "UpdatePolicy":{ "AutoScalingScheduledAction":{ "IgnoreUnmodifiedGroupSizeProperties":"true" }, "AutoScalingRollingUpdate":{ "MinInstancesInService":"1", "MaxBatchSize":"2", "WaitOnResourceSignals":"true", "PauseTime":"PT10M", "SuspendProcesses":[ "HealthCheck", "ReplaceUnhealthy", "AZRebalance", "AlarmNotification", "ScheduledActions", "InstanceRefresh" ] } } }
YAML
ASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: VPCZoneIdentifier: -subnetIdAz1-subnetIdAz2-subnetIdAz3LaunchTemplate: LaunchTemplateId: !ReflogicalNameVersion: !GetAttlogicalName.LatestVersionNumber MaxSize: '4' MinSize: '1' UpdatePolicy: AutoScalingScheduledAction: IgnoreUnmodifiedGroupSizeProperties: 'true' AutoScalingRollingUpdate: MinInstancesInService: '1' MaxBatchSize: '2' WaitOnResourceSignals: 'true' PauseTime: PT10M SuspendProcesses: - HealthCheck - ReplaceUnhealthy - AZRebalance - AlarmNotification - ScheduledActions - InstanceRefresh
Política AutoScalingReplacingUpdate
El siguiente ejemplo declara una política que obliga a sustituir un grupo de escalado automático asociado durante una actualización. Para que la actualización se realice correctamente, un porcentaje de instancias (especificadas por el parámetro MinSuccessfulPercentParameter) debe señalizar el éxito en el periodo de Timeout.
JSON
"UpdatePolicy" : { "AutoScalingReplacingUpdate" : { "WillReplace" : true } }, "CreationPolicy" : { "ResourceSignal" : { "Count" : { "Ref" : "ResourceSignalsOnCreate"}, "Timeout" : "PT10M" }, "AutoScalingCreationPolicy" : { "MinSuccessfulInstancesPercent" : { "Ref" : "MinSuccessfulPercentParameter" } } }
YAML
UpdatePolicy: AutoScalingReplacingUpdate: WillReplace: true CreationPolicy: ResourceSignal: Count: !Ref 'ResourceSignalsOnCreate' Timeout: PT10M AutoScalingCreationPolicy: MinSuccessfulInstancesPercent: !Ref 'MinSuccessfulPercentParameter'
Política AutoScalingInstanceRefresh
En los siguientes ejemplos, se muestran dos configuraciones comunes de la política AutoScalingInstanceRefresh. En el primer de ellos, se utiliza la función de lanzar antes de terminar para mantener la capacidad durante la actualización. En el segundo ejemplo se usa una alarma de CloudWatch para revertir la pila si la implementación causa problemas.
Actualización de lanzar antes de terminar
En el siguiente ejemplo, se declara una política de AutoScalingInstanceRefresh que utiliza la opción de lanzar antes de terminar. Al establecer un MinHealthyPercentage en 100, se garantiza que las nuevas instancias se lancen antes de que finalicen las existentes, y un MaxHealthyPercentage de 200 permite que el grupo duplique su tamaño temporalmente. La política también omite las instancias que ya coinciden con la configuración.
JSON
"ASG" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "VPCZoneIdentifier" : [ "subnetIdAz1", "subnetIdAz2", "subnetIdAz3" ], "LaunchTemplate" : { "LaunchTemplateId" : { "Ref" : "logicalName" }, "Version" : { "Fn::GetAtt" : [ "logicalName", "LatestVersionNumber" ] } }, "MaxSize" : "4", "MinSize" : "1" }, "UpdatePolicy" : { "AutoScalingInstanceRefresh" : { "Strategy" : "Rolling", "Preferences" : { "MinHealthyPercentage" : 100, "MaxHealthyPercentage" : 200, "SkipMatching" : true } } } }
YAML
ASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: VPCZoneIdentifier: -subnetIdAz1-subnetIdAz2-subnetIdAz3LaunchTemplate: LaunchTemplateId: !ReflogicalNameVersion: !GetAttlogicalName.LatestVersionNumber MaxSize: '4' MinSize: '1' UpdatePolicy: AutoScalingInstanceRefresh: Strategy: Rolling Preferences: MinHealthyPercentage: 100 MaxHealthyPercentage: 200 SkipMatching: true
Actualización con reversión basada en alarma
En el siguiente ejemplo, se declara una política de AutoScalingInstanceRefresh con puntos de comprobación, una reversión basada en alarmas y un tiempo de incorporación. Auto Scaling hace una pausa de 5 minutos en cada punto de comprobación y espera 10 minutos después de completarse antes de declarar que se ha realizado correctamente.
JSON
"ASG" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "VPCZoneIdentifier" : [ "subnetIdAz1", "subnetIdAz2", "subnetIdAz3" ], "LaunchTemplate" : { "LaunchTemplateId" : { "Ref" : "logicalName" }, "Version" : { "Fn::GetAtt" : [ "logicalName", "LatestVersionNumber" ] } }, "MaxSize" : "4", "MinSize" : "1" }, "UpdatePolicy" : { "AutoScalingInstanceRefresh" : { "Strategy" : "Rolling", "Preferences" : { "CheckpointPercentages" : [ 33, 66, 100 ], "CheckpointDelay" : 300, "BakeTime" : 600, "AlarmSpecification" : { "Alarms" : [ "my-cloud-watch-alarm" ] } } } } }
YAML
ASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: VPCZoneIdentifier: -subnetIdAz1-subnetIdAz2-subnetIdAz3LaunchTemplate: LaunchTemplateId: !ReflogicalNameVersion: !GetAttlogicalName.LatestVersionNumber MaxSize: '4' MinSize: '1' UpdatePolicy: AutoScalingInstanceRefresh: Strategy: Rolling Preferences: CheckpointPercentages: - 33 - 66 - 100 CheckpointDelay: 300 BakeTime: 600 AlarmSpecification: Alarms: -my-cloud-watch-alarm
Mantener la disponibilidad al actualizar los metadatos para el script auxiliar cfn-init
Al instalar aplicaciones de software en las instancias, puede utilizar la clave de metadatos AWS::CloudFormation::Init y el script auxiliar cfn-init para el proceso de arranque de las instancias en el grupo de escalado automático. CloudFormation instala los paquetes, ejecuta los comandos y realiza otras acciones del proceso de arranque que se describen en los metadatos.
Al actualizar solo los metadatos (por ejemplo, cuando se actualiza un paquete a otra versión), puede utilizar el daemon auxiliar cfn-hup para detectar y aplicar las actualizaciones. Sin embargo, el daemon cfn-hup se ejecuta de forma independiente en cada instancia. Si el daemon se ejecuta al mismo tiempo en todas las instancias, su aplicación o servicio podría no estar disponible durante la actualización. Para garantizar la disponibilidad, puede forzar una actualización acumulativa para que CloudFormation actualice sus instancias de lote en lote.
importante
Para forzar una actualización acumulativa, CloudFormation debe crear una nueva instancia y, a continuación, eliminar la antigua. Toda la información almacenada en la antigua instancia se pierde.
Para forzar una actualización acumulativa, cambie el ID lógico del recurso de configuración de lanzamiento y, a continuación, actualice la pila y todas las referencias que apuntan al ID de lógica original (como el grupo de escalado automático asociado). CloudFormation desencadena una actualización acumulativa en el grupo de escalado automático y sustituye todas las instancias.
Plantilla original
"LaunchConfig": { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Metadata" : { "Comment" : "Install a simple PHP application", "AWS::CloudFormation::Init" : { ... } } }
ID lógico actualizado
"LaunchConfigUpdateRubygemsPkg": { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Metadata" : { "Comment" : "Install a simple PHP application", "AWS::CloudFormation::Init" : { ... } } }
Política de actualización de alias de Lambda
El siguiente ejemplo especifica el atributo UpdatePolicy para un recurso AWS::Lambda::Alias. Todos los detalles de la implementación se definen mediante el grupo de implementación y la aplicación que se transfieren a la política.
JSON
"Alias": { "Type": "AWS::Lambda::Alias", "Properties": { "FunctionName": { "Ref": "LambdaFunction" }, "FunctionVersion": { "Fn::GetAtt": [ "FunctionVersionTwo", "Version" ] }, "Name": "MyAlias" }, "UpdatePolicy": { "CodeDeployLambdaAliasUpdate": { "ApplicationName": { "Ref": "CodeDeployApplication" }, "DeploymentGroupName": { "Ref": "CodeDeployDeploymentGroup" }, "BeforeAllowTrafficHook": { "Ref": "PreHookLambdaFunction" }, "AfterAllowTrafficHook": { "Ref": "PreHookLambdaFunction" } } } }
YAML
Alias: Type: AWS::Lambda::Alias Properties: FunctionName: !Ref LambdaFunction FunctionVersion: !GetAtt FunctionVersionTwo.Version Name: MyAlias UpdatePolicy: CodeDeployLambdaAliasUpdate: ApplicationName: !Ref CodeDeployApplication DeploymentGroupName: !Ref CodeDeployDeploymentGroup BeforeAllowTrafficHook: !Ref PreHookLambdaFunction AfterAllowTrafficHook: !Ref PreHookLambdaFunction