Attribut CreationPolicy
Associez l'attribut CreationPolicy
à une ressource pour empêcher son état d'indiquer que la création a réussi tant qu'AWS CloudFormation ne reçoit pas un certain nombre de signaux de réussite ou que le délai d'expiration n'est pas dépassé. Pour signaler une ressource, vous pouvez utiliser le script d'assistant cfn-signal ou l'API SignalResource
. CloudFormation publie les signaux valides dans les événements de la pile afin que vous puissiez suivre le nombre de signaux envoyés.
La politique de création est appelée uniquement lorsque CloudFormation crée la ressource associée. Actuellement, les seules ressources CloudFormation qui prennent en charge les politiques de création sont :
Utilisez l'attribut CreationPolicy
lorsque vous voulez attendre que les actions de configuration de ressource ne soient terminées avant que la création de la pile ne commence. Par exemple, si vous installez et configurez des applications logicielles dans une instance EC2, vous souhaitez peut-être que ces applications soient exécutées avant de poursuivre. Dans ce cas, vous pouvez ajouter un attribut CreationPolicy
à l'instance, puis envoyer un signal de réussite à l'instance une fois que les applications sont installées et configurées. Pour voir un exemple détaillé, veuillez consulter Déploiement d'applications sur Amazon EC2 avec AWS CloudFormation.
Politique de création AppStream 2.0
Configuration Amazon AppStream pour une politique de création.
Syntaxe
JSON
{ "CreationPolicy": { "StartFleet": { "Type": "
Boolean
" } } }
YAML
CreationPolicy: StartFleet: Type:
Boolean
Propriétés de création Amazon EC2 Auto Scaling
Configuration d'Amazon EC2 Auto Scaling pour une politique de création.
Syntaxe
JSON
"CreationPolicy" : { "AutoScalingCreationPolicy" : { "MinSuccessfulInstancesPercent" :
Integer
}, "ResourceSignal" : { "Count" :Integer
, "Timeout" :String
} }
YAML
CreationPolicy: AutoScalingCreationPolicy: MinSuccessfulInstancesPercent:
Integer
ResourceSignal: Count:Integer
Timeout:String
Propriétés de création Amazon EC2 Auto Scaling
Configuration d'Amazon EC2 Auto Scaling pour une politique de création.
AutoScalingCreationPolicy
-
Pour un nouveau groupe Amazon EC2 Auto Scaling, cette configuration spécifie le nombre d'instances qui doivent signaler une réussite avant que l'état du groupe ne devienne
CREATE_COMPLETE
.MinSuccessfulInstancesPercent
-
Spécifie le pourcentage d'instances d'un groupe Amazon EC2 Auto Scaling qui doivent signaler une réussite avant que l'état du groupe ne devienne
CREATE_COMPLETE
. Vous pouvez spécifier une valeur comprise entre0
et100
. CloudFormation arrondit au dixième de pour cent le plus proche. Par exemple, si vous créez cinq instances avec un pourcentage minimum de réussite de50
, trois instances doivent signaler leur réussite. Si une instance n'envoie aucun signal dans le délai spécifié par la propriétéTimeout
, CloudFormation présume que l'instance n'a pas été créée.Par défaut :
100
Type : entier
Obligatoire : non
ResourceSignal
-
Lorsque CloudFormation crée la ressource associée, cette propriété configure le nombre de signaux de réussite requis et la durée pendant laquelle CloudFormation attend ces signaux.
Count
-
Nombre de signaux de réussite que CloudFormation doit recevoir avant de définir l'état
CREATE_COMPLETE
pour la ressource. Si la ressource reçoit un signal d'échec ou ne reçoit pas le nombre de signaux spécifié avant l'expiration du délai d'attente, la création de la ressource échouera et CloudFormation restaurera la pile.Par défaut :
1
Type : entier
Obligatoire : non
Timeout
-
Durée pendant laquelle CloudFormation attend de recevoir le nombre de signaux spécifié dans la propriété
Count
. Le délai d'expiration démarre une fois que CloudFormation commence la création de la ressource, et expire au moment que vous spécifiez ou peu de temps après. La durée maximale que vous pouvez spécifier est de 12 heures.Cette valeur doit respecter le format de durée ISO8601
, sous la forme : PT
, où chaque#
H#
M#
S#
correspond respectivement au nombre d'heures, de minutes et de secondes. Pour optimiser les performances, spécifiez une période qui laisse suffisamment de temps à vos instances pour être opérationnelles. Un délai d'expiration trop court peut entraîner une restauration.Valeur par défaut :
PT5M
(5 minutes)Type : chaîne
Obligatoire : non
Exemples
Groupe Auto Scaling
L'exemple suivant montre comment ajouter une politique de création à un groupe Amazon EC2 Auto Scaling. Cette politique de création nécessite trois signaux de réussite et expire au bout de 15 minutes.
Pour que les instances attendent une vérification de l'état Elastic Load Balancing avant de signaler un succès, ajoutez une vérification de l'état à l'aide du script d'assistant cfn-init. Pour un exemple, voir la commande verify_instance_health
dans l'exemple de modèle de déploiement des mises à jour 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
L'exemple suivant montre comment ajouter une politique de création à une condition d'attente.
JSON
"WaitCondition" : { "Type" : "AWS::CloudFormation::WaitCondition", "CreationPolicy" : { "ResourceSignal" : { "Timeout" : "PT15M", "Count" : "5" } } }
YAML
WaitCondition: Type: AWS::CloudFormation::WaitCondition CreationPolicy: ResourceSignal: Timeout: PT15M Count: 5