Atributo CreationPolicy - AWS CloudFormation

Atributo CreationPolicy

Associe o atributo CreationPolicy a um recurso para impedir que seu status chegue à criação concluída até que o AWS CloudFormation receba um número especificado de sinais de sucesso ou o tempo limite tenha expirado. Para sinalizar um recurso, você pode usar o script de ajuda cfn-signal ou a SignalResource API. O CloudFormation publica sinais válidos nos eventos de pilha para que você rastreie o número de sinais enviados.

A política de criação é invocada somente quando o CloudFormation cria o recurso associado. No momento, os únicos recursos do CloudFormation que oferecem suporte às políticas de criação são:

Use o atributo CreationPolicy quando você desejar trabalhar nas ações de configuração de recurso antes da criação da pilha prosseguir. Por exemplo, se você instalar e configurar aplicativos de software em uma instância do EC2, você pode querer que esses aplicativos sejam executados antes de prosseguir. Em tais casos, você pode adicionar um atributo CreationPolicy à instância e, em seguida, enviar um sinal de sucesso para a instância depois que os aplicativos estiverem instalados e configurados. Para obter um exemplo detalhado, consulte Implantar aplicativos no Amazon EC2 com o AWS CloudFormation.

Sintaxe

JSON

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

YAML

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

Propriedades de CreationPolicy

AutoScalingCreationPolicy

Para uma atualização de substituição de grupo de Auto Scaling, especifica quantas instâncias devem sinalizar êxito para que a atualização seja bem-sucedida.

MinSuccessfulInstancesPercent

Especifica a porcentagem de instâncias em uma atualização de substituição de Auto Scaling devem sinalizar sucesso para que a atualização seja bem-sucedida. Você pode especificar um valor de 0 para 100. O CloudFormation arredonda para o décimo mais próximo de um percentual. Por exemplo, se você atualizar cinco instâncias com uma porcentagem mínima de êxito de 50, três instâncias deverão sinalizar sucesso. Se uma instância não enviar um sinal no tempo especificado pela propriedade Timeout, o CloudFormation entenderá que a instância não foi criada.

Padrão: 100

Type: Integer

Required: No

ResourceSignal

Quando o CloudFormation cria o recurso associado, configura o número de sinais de êxito necessários e o tempo em que o CloudFormation aguarda por esses sinais.

Count

O número de sinais de sucesso que o CloudFormation deve receber antes que ele defina o status do recurso como CREATE_COMPLETE. Se o recurso recebe um sinal de falha ou não recebe o número especificado de sinais antes do tempo de espera expirar, a criação de recursos falha e o CloudFormation reverte a pilha.

Padrão: 1

Type: Integer

Required: No

Timeout

O período que o CloudFormation aguarda pelo número de sinais especificado na propriedade Count. O período de expiração começa após o CloudFormation iniciar a criação do recurso e o tempo de espera não expira antes da hora especificada, mas pode ocorrer um pouco depois. O tempo máximo que você pode especificar é 12 horas.

O valor deve ser no formato de duração ISO8601, na forma: "PT#H#M#S", onde cada # é o número de horas, minutos e segundos, respectivamente. Para obter os melhores resultados, especifique um período que oferece a suas instâncias bastante tempo para inicialização e execução. Um tempo de espera mais curto pode causar uma reversão.

Padrão: PT5M (5 minutos)

Type: String

Required: No

Exemplos

grupo do Auto Scaling

O seguinte exemplo mostra como adicionar uma política de criação a um grupo de Auto Scaling. A política de criação requer três sinais de sucesso e expira depois de 15 minutos.

Para que as instâncias esperem por uma verificação de integridade do Elastic Load Balancing antes de sinalizar sucesso, adicione uma verificação de integridade usando o script de ajuda cfn-init. Para ver um exemplo, consulte o comando verify_instance_health no modelo de exemplo Auto Scaling rolling updates.

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

O seguinte exemplo mostra como adicionar uma política de criação a uma condição 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