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 de0
a100
. 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 de50
, três instâncias deverão indicar sucesso. Se uma instância não enviar um sinal no tempo especificado pela propriedadeTimeout
, 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
onde cada#
H#
M#
S#
é 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