Atributo UpdatePolicy - AWS CloudFormation

Atributo UpdatePolicy

Utilice el atributo UpdatePolicy para especificar la manera en que AWS CloudFormation administra las actualizaciones de ciertos recursos durante las operaciones de actualización de pilas.

Informació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 AutoScalingReplacingUpdate y AutoScalingRollingUpdate: CloudFormation puede sustituir el grupo de escalado automático y sus instancias con la política AutoScalingReplacingUpdate o sustituir únicamente las instancias con la política AutoScalingRollingUpdate. 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 Auto Scaling.

      • Cambie la propiedad VPCZoneIdentifier del grupo de Auto Scaling.

      • Cambie la propiedad LaunchTemplate del grupo de Auto Scaling.

      • Actualizar un grupo de Auto Scaling que contenga instancias que no coincidan con la LaunchConfiguration actual.

      Si se especifican las dos políticas, AutoScalingReplacingUpdate y AutoScalingRollingUpdate, al establecer la propiedad WillReplace en true, AutoScalingReplacingUpdate tiene preferencia.

    • 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 AppStream 2.0

Para detener una flota de AppStream 2.0 antes de comenzar una actualización y reiniciarla cuando finalice, utilice la política de actualización de AppStream 2.0.

Sintaxis

JSON

{ "UpdatePolicy": { "StopBeforeUpdate": { "Type": "Boolean" }, "StartAfterUpdate": { "Type": "Boolean" } } }

YAML

UpdatePolicy: StopBeforeUpdate: Type: Boolean StartAfterUpdate: 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 CreationPolicy correspondiente. En caso de que el número mínimo de instancias (especificado por la propiedad MinSuccessfulInstancesPercent) no dé ninguna señal de éxito durante el periodo de Timeout (especificado en la política de CreationPolicy), 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:

  • Cuando CloudFormation revierte una actualización, utiliza la configuración de UpdatePolicy especificada en la plantilla antes de la actualización de la pila actual. Por ejemplo, se cambia el MaxBatchSize de 1 a 10 en UpdatePolicy, 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 de UpdatePolicy en 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 SuspendProcesses para 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?

  • 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 sea CONTINUE al 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 estado InService, la actualización continua finalmente fallará.

  • Las características de Amazon EC2 Auto Scaling, como las políticas de mantenimiento de una instancia, las políticas de finalización y la protección de la reducción horizontal, no se podrán utilizar con una actualización continua de CloudFormation. Planifique de manera correspondiente las actualizaciones continuas.

Sintaxis

JSON

"UpdatePolicy" : { "AutoScalingRollingUpdate" : { "MaxBatchSize" : Integer, "MinActiveInstancesPercent" : Integer, "MinInstancesInService" : Integer, "MinSuccessfulInstancesPercent" : Integer, "PauseTime" : String, "SuspendProcesses" : [ List of processes ], "WaitOnResourceSignals" : Boolean } }

Propiedades

MaxBatchSize

Especifica el número máximo de instancias que pueden reemplazarse en forma simultánea.

Valor predeterminado: 1

Máximo: 100

Tipo: entero

Obligatorio: no

MinActiveInstancesPercent

Especifica el porcentaje de instancias de un grupo de escalado automático que debe estar en el estado InService relativo 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 de InServicede 50, como mínimo, al menos tres instancias beben encontrarse en el estado InService. Si una instancia no se cambia al estado InService dentro del plazo de 1 hora, CloudFormation asume que dicha instancia no se ha actualizado.

La configuración de MinActiveInstancesPercent en UpdatePolicy afectará también a las instancias lanzadas cuando la propiedad DesiredCapacity del recurso de AWS::AutoScaling::AutoScalingGroup supere la capacidad actual deseada para ese grupo de escalado automático.

Valor predeterminado: 100

Tipo: 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 MinInstancesInService en, 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: 0

Tipo: 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 propiedad PauseTime, CloudFormation supone que la instancia no se ha actualizado.

Es recomendable que establezca el valor de la propiedad MinSuccessfulInstancesPercent en un valor superior a 0. Cuando la propiedad MinSuccessfulInstancesPercent se establece en 0, CloudFormation espera a que el 0 % de las instancias de capacidad estén en un estado InService. MinSuccessfulInstancesPercent vuelve inmediatamente, antes de considerar el estado del grupo de escalado automático como UPDATE_COMPLETE para 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 estado InService, experimentará problemas de disponibilidad, debido a que ninguna instancia atiende el tráfico de clientes.

Valor predeterminado: 100

Tipo: 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 PauseTime en el formato de duración ISO8601 (en el formatoPT#H#M#S, donde cada # es el número de horas, minutos y segundos, respectivamente). El valor de PauseTime máximo es una hora (PT1H).

aviso

Cuando WaitOnResourceSignals se establece en true, PauseTime actú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 recurso AWS::AutoScaling::AutoScalingGroup. Si se supera PauseTime antes 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 de PauseTime muy corto puede hacer que la restauración falle.

Valor predeterminado: PT5M (5 minutos) cuando la propiedad WaitOnResourceSignals está establecida en true. 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 PauseTime especificado.

Para señalar el grupo de escalado automático, utilice el script auxiliar cfn-signal o la API SignalResource. 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 de ayuda cfn-init. Para ver un ejemplo, consulte el comando verify_instance_health en las plantillas de ejemplo para las actualizaciones acumulativas de Amazon EC2 Auto Scaling en nuestro repositorio de GitHub.

Valor predeterminado: false

Tipo: Booleano

Obligatorio: condicional. Si especifica la propiedad MinSuccessfulInstancesPercent, debe establecer la propiedad WaitOnResourceSignals en true.

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 } }

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 recurso AWS::AutoScaling::AutoScalingGroup de 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.

Valor predeterminado: false

Tipo: 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 NumNodeGroups y NodeGroupConfiguration como 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, ReplicaAvailabilityZones y ReplicaCount de cada NodeGroupConfiguration. 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 UseOnlineResharding para 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 propiedad Slots de cada NodeGroupConfiguration de 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 NumNodeGroups que 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 sobre la actualización de los dominios de OpenSearch Service, consulte UpgradeDomain 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 } }

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 - subnetIdAz3 LaunchTemplate: LaunchTemplateId: !Ref logicalName Version: !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

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'

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