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.
Temas
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
yAutoScalingRollingUpdate
: CloudFormation puede sustituir el grupo de escalado automático y sus instancias con la políticaAutoScalingReplacingUpdate
o 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 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
yAutoScalingRollingUpdate
, al establecer la propiedadWillReplace
entrue
,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
yAWS::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 unaCreationPolicy
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 la política deCreationPolicy
), 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 elMaxBatchSize
de 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 deUpdatePolicy
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 seaCONTINUE
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 estadoInService
, 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
} }
YAML
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 deInService
de 50, como mínimo, al menos tres instancias beben encontrarse en el estadoInService
. Si una instancia no se cambia al estadoInService
dentro del plazo de 1 hora, CloudFormation asume que dicha instancia no se ha actualizado.La configuración de
MinActiveInstancesPercent
enUpdatePolicy
afectará también a las instancias lanzadas cuando la propiedadDesiredCapacity
del recurso deAWS::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 propiedadPauseTime
, 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 propiedadMinSuccessfulInstancesPercent
se establece en 0, CloudFormation espera a que el 0 % de las instancias de capacidad estén en un estadoInService
.MinSuccessfulInstancesPercent
vuelve inmediatamente, antes de considerar el estado del grupo de escalado automático comoUPDATE_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 estadoInService
, 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 formato PT
, donde cada#
H#
M#
S#
es el número de horas, minutos y segundos, respectivamente). El valor dePauseTime
máximo es una hora (PT1H
).aviso
Cuando
WaitOnResourceSignals
se establece entrue
,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 recursoAWS::AutoScaling::AutoScalingGroup
. Si se superaPauseTime
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 dePauseTime
muy corto puede hacer que la restauración falle.Valor predeterminado:
PT5M
(5 minutos) cuando la propiedadWaitOnResourceSignals
está 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
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 comandoverify_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 propiedadWaitOnResourceSignals
entrue
.
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::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
yNodeGroupConfiguration
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
yReplicaCount
de 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
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 propiedadSlots
de cadaNodeGroupConfiguration
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
} }
YAML
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: !ReflogicalName
Version: !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'
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