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 API SignalResource. O CloudFormation publica sinais válidos para os 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 aplicações de software em uma instância do EC2, você pode querer que essas aplicações sejam executadas 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 as aplicações estiverem instaladas e configuradas. Para obter um exemplo detalhado, consulte Implantar aplicações no Amazon EC2 com o AWS CloudFormation.

Política de criação do AppStream 2.0

Configuração do Amazon AppStream para uma política de criação.

Sintaxe

JSON

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

YAML

CreationPolicy: StartFleet: Type: Boolean
StartFleet

Inicia a frota especificada.

Obrigatório: não

Propriedades de criação do Amazon EC2 Auto Scaling

Configuração do Amazon EC2 Auto Scaling para uma política de criação.

Sintaxe

JSON

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

YAML

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

Propriedades de criação do Amazon EC2 Auto Scaling

Configuração do Amazon EC2 Auto Scaling para uma política de criação.

AutoScalingCreationPolicy

Para um novo grupo do Amazon EC2 Auto Scaling, especifica o número de instâncias que devem sinalizar sucesso antes que o status do grupo seja definido como CREATE_COMPLETE.

MinSuccessfulInstancesPercent

Especifica a porcentagem de instâncias em um Amazon EC2 Auto Scaling que devem indicar sucesso antes que o status do grupo seja definido como CREATE_COMPLETE. É possível especificar um valor de 0 a 100. O CloudFormation arredonda para o décimo mais próximo de um percentual. Por exemplo, se você criar cinco instâncias com uma porcentagem mínima de sucesso de 50, três instâncias deverão indicar 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

Tipo: inteiro

Obrigatório: não

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

Tipo: inteiro

Obrigatório: não

Timeout

O período que o CloudFormation aguarda pelo número de sinais especificado na propriedade Count. O período de tempo limite começa depois que o CloudFormation estabiliza o recurso e não expira até a hora especificada, mas pode ocorrer logo 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)

Tipo: string

Obrigatório: não

Exemplos

Auto Scaling group (Grupo do Auto Scaling)

O exemplo a seguir mostra como adicionar uma política de criação a um grupo do Amazon EC2 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 obter um exemplo, consulte o comando verify_instance_health nos modelos de amostras para atualizações cumulativas do Amazon EC2 Auto Scaling em nosso repositório do GitHub.

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