Atributo CreationPolicy - AWS CloudFormation

Atributo CreationPolicy

Asocie el atributo CreationPolicy con un recurso para impedir que alcance el estado de creación completada hasta que AWS CloudFormation reciba un número específico de señales o se supere el período de tiempo de espera. Para señalar un recurso, puede utilizar el script auxiliar cfn-signal o la API SignalResource. CloudFormation publica señales válidas a los eventos de la pila para poder realizar un seguimiento del número de señales enviadas.

La política de creación se invoca solo cuando CloudFormation crea el recurso asociado. En la actualidad, los únicos recursos de CloudFormation compatibles con las políticas de creación son:

Utilice el atributo CreationPolicy cuando desee esperar acciones de configuración de recursos antes de que la creación de la pila avance. Por ejemplo, si instala y configura aplicaciones de software en una instancia de EC2, es posible que desee que se ejecuten esas aplicaciones antes de continuar. En estos casos, puede agregar un atributo CreationPolicy a la instancia y, a continuación, enviar una señal de éxito a la instancia una vez que las aplicaciones estén instaladas y configuradas. Para un ejemplo detallado, consulte Implementación de aplicaciones en Amazon EC2 con AWS CloudFormation.

Política de creación de AppStream 2.0

Configuración de Amazon AppStream para una política de creación.

Sintaxis

JSON

{ "CreationPolicy": { "StartFleet": { "Type": "Boolean" } } }

YAML

CreationPolicy: StartFleet: Type: Boolean
StartFleet

Inicia la flota especificada.

Obligatorio: no

Propiedades de creación de Amazon EC2 Auto Scaling

Configuración de Amazon EC2 Auto Scaling para una política de creación.

Sintaxis

JSON

"CreationPolicy" : { "AutoScalingCreationPolicy" : { "MinSuccessfulInstancesPercent" : Integer }, "ResourceSignal" : { "Count" : Integer, "Timeout" : String } }

YAML

CreationPolicy: AutoScalingCreationPolicy: MinSuccessfulInstancesPercent: Integer ResourceSignal: Count: Integer Timeout: String

Propiedades de creación de Amazon EC2 Auto Scaling

Configuración de Amazon EC2 Auto Scaling para una política de creación.

AutoScalingCreationPolicy

Para un nuevo grupo de Amazon EC2 Auto Scaling, especifica el número de instancias que deben indicar que la operación se realizó correctamente antes de establecer el estado del grupo en CREATE_COMPLETE.

MinSuccessfulInstancesPercent

Especifica el porcentaje de instancias en Amazon EC2 Auto Scaling que debe indicar éxito antes de establecer el estado del grupo en CREATE_COMPLETE. Puede especificar un valor de 0 a 100. CloudFormation redondea a la décima de porcentaje más próxima. Por ejemplo, si crea 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 que ha especificado la propiedad Timeout, CloudFormation supone que la instancia no se ha creado.

Valor predeterminado: 100

Tipo: entero

Obligatorio: no

ResourceSignal

Cuando CloudFormation crea el recurso asociado, configura el número de señales de éxito necesarias y el tiempo durante el cual CloudFormation espera dichas señales.

Count

El número de señales de éxito que CloudFormation debe recibir antes de establecer el estado de los recursos como CREATE_COMPLETE. Si el recurso recibe una señal de error o no recibe el número especificado de señales antes de que venza el periodo de tiempo de espera, se produce el error de creación del recurso y CloudFormation restaura la pila al estado anterior.

Valor predeterminado: 1

Tipo: entero

Obligatorio: no

Timeout

El tiempo que CloudFormation espera el número de señales que se ha especificado en la propiedad Count. El periodo de tiempo de espera comienza después de que CloudFormation comienza a crear el recurso y el tiempo de espera vence en el momento que usted especifique, no antes, pero también puede producirse poco después. El tiempo máximo que puede especificar es de 12 horas.

El valor debe estar en el formato de duración ISO8601, en el formato PT#H#M#S, donde cada # corresponde al número de horas, minutos y segundos, respectivamente. Para obtener los mejores resultados, especifique un periodo de tiempo que proporcione a sus instancias suficiente tiempo para estar operativas. Un tiempo de espera más corto puede causar una restauración.

Valor predeterminado: PT5M (5 minutos)

Tipo: cadena

Obligatorio: no

Ejemplos

Grupo de escalado automático

En el siguiente ejemplo se muestra cómo agregar una política de creación a un grupo de Amazon EC2 Auto Scaling. La política de creación requiere tres señales de éxito y agota el tiempo de espera después de 15 minutos.

Para que las instancias esperen una comprobación de estado de Elastic Load Balancing para que envíen una señal de éxito, añada una verificación de comprobación de estado mediante el script auxiliar cfn-init. Para ver un ejemplo, consulte el comando verify_instance_health en la plantilla de ejemplo Amazon EC2 Auto Scaling rolling updates (Actualizaciones acumulativas de Amazon EC2 Auto Scaling).

JSON
"AutoScalingGroup": { "Type": "AWS::AutoScaling::AutoScalingGroup", "Properties": { "AvailabilityZones": { "Fn::GetAZs": "" }, "LaunchConfigurationName": { "Ref": "LaunchConfig" }, "DesiredCapacity": "3", "MinSize": "1", "MaxSize": "4" }, "CreationPolicy": { "ResourceSignal": { "Count": "3", "Timeout": "PT15M" } }, "UpdatePolicy" : { "AutoScalingScheduledAction" : { "IgnoreUnmodifiedGroupSizeProperties" : "true" }, "AutoScalingRollingUpdate" : { "MinInstancesInService" : "1", "MaxBatchSize" : "2", "PauseTime" : "PT1M", "WaitOnResourceSignals" : "true" } } }, "LaunchConfig": { "Type": "AWS::AutoScaling::LaunchConfiguration", "Properties": { "ImageId": "ami-16d18a7e", "InstanceType": "t2.micro", "UserData": { "Fn::Base64": { "Fn::Join" : [ "", [ "#!/bin/bash -xe\n", "yum install -y aws-cfn-bootstrap\n", "/opt/aws/bin/cfn-signal -e 0 --stack ", { "Ref": "AWS::StackName" }, " --resource AutoScalingGroup ", " --region ", { "Ref" : "AWS::Region" }, "\n" ] ] } } } }
YAML
AutoScalingGroup: Type: AWS::AutoScaling::AutoScalingGroup Properties: AvailabilityZones: Fn::GetAZs: '' LaunchConfigurationName: Ref: LaunchConfig DesiredCapacity: '3' MinSize: '1' MaxSize: '4' CreationPolicy: ResourceSignal: Count: '3' Timeout: PT15M UpdatePolicy: AutoScalingScheduledAction: IgnoreUnmodifiedGroupSizeProperties: 'true' AutoScalingRollingUpdate: MinInstancesInService: '1' MaxBatchSize: '2' PauseTime: PT1M WaitOnResourceSignals: 'true' LaunchConfig: Type: AWS::AutoScaling::LaunchConfiguration Properties: ImageId: ami-16d18a7e InstanceType: t2.micro UserData: "Fn::Base64": !Sub | #!/bin/bash -xe yum update -y aws-cfn-bootstrap /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource AutoScalingGroup --region ${AWS::Region}

WaitCondition

El siguiente ejemplo muestra cómo añadir una política de creación a una condición de espera.

JSON
"WaitCondition" : { "Type" : "AWS::CloudFormation::WaitCondition", "CreationPolicy" : { "ResourceSignal" : { "Timeout" : "PT15M", "Count" : "5" } } }
YAML
WaitCondition: Type: AWS::CloudFormation::WaitCondition CreationPolicy: ResourceSignal: Timeout: PT15M Count: 5