Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
CloudFormation extraits de modèles
Rubriques
Piles imbriquées
Imbrication d'une pile dans un modèle
Cet exemple de modèle contient une ressource de pile imbriquée appelée myStack. Lorsqu'il CloudFormation crée une pile à partir du modèle, il crée lemyStack, dont le modèle est spécifié dans la TemplateURL propriété. La valeur de sortie StackRef renvoie l'ID de pile pour myStack et la valeur OutputFromNestedStack renvoie la valeur de sortie BucketName à partir de la ressource myStack. Le format Outputs. est réservé pour spécifier les valeurs de sortie des piles imbriquées et peut être utilisé n’importe où dans le modèle.nestedstackoutputname
Pour de plus amples informations, veuillez consulter AWS::CloudFormation::Stack.
JSON
{ "AWSTemplateFormatVersion" : "2010-09-09", "Resources" : { "myStack" : { "Type" : "AWS::CloudFormation::Stack", "Properties" : { "TemplateURL" : "https://s3.amazonaws.com/cloudformation-templates-us-east-1/S3_Bucket.template", "TimeoutInMinutes" : "60" } } }, "Outputs": { "StackRef": {"Value": { "Ref" : "myStack"}}, "OutputFromNestedStack" : { "Value" : { "Fn::GetAtt" : [ "myStack", "Outputs.BucketName" ] } } } }
YAML
AWSTemplateFormatVersion: '2010-09-09' Resources: myStack: Type: AWS::CloudFormation::Stack Properties: TemplateURL: https://s3.amazonaws.com/cloudformation-templates-us-east-1/S3_Bucket.template TimeoutInMinutes: '60' Outputs: StackRef: Value: !Ref myStack OutputFromNestedStack: Value: !GetAtt myStack.Outputs.BucketName
Imbrication d'une pile avec des paramètres d'entrée dans un modèle
Cet exemple de modèle contient une ressource de pile qui spécifie les paramètres d'entrée. Lors de la CloudFormation création d'une pile à partir de ce modèle, il utilise les paires de valeurs déclarées dans la Parameters propriété comme paramètres d'entrée pour le modèle utilisé pour créer la myStackWithParams pile. Dans cet exemple, les paramètres InstanceType et KeyName sont spécifiés.
Pour de plus amples informations, veuillez consulter AWS::CloudFormation::Stack.
JSON
{ "AWSTemplateFormatVersion" : "2010-09-09", "Resources" : { "myStackWithParams" : { "Type" : "AWS::CloudFormation::Stack", "Properties" : { "TemplateURL" : "https://s3.amazonaws.com/cloudformation-templates-us-east-1/EC2ChooseAMI.template", "Parameters" : { "InstanceType" : "t2.micro", "KeyName" : "mykey" } } } } }
YAML
AWSTemplateFormatVersion: '2010-09-09' Resources: myStackWithParams: Type: AWS::CloudFormation::Stack Properties: TemplateURL: https://s3.amazonaws.com/cloudformation-templates-us-east-1/EC2ChooseAMI.template Parameters: InstanceType: t2.micro KeyName: mykey
Condition d'attente
Utilisation d'une condition d'attente avec une EC2 instance Amazon
Important
Pour les ressources Amazon EC2 et Amazon EC2 Auto Scaling, nous vous recommandons d'utiliser un CreationPolicy attribut plutôt que des conditions d'attente. Ajoutez un CreationPolicy attribut à ces ressources et utilisez le script d'assistance cfn-signal pour signaler qu'un processus de création d'instance s'est terminé avec succès.
Si vous ne pouvez pas utiliser de politique de création, vous pouvez consulter l'exemple de modèle suivant, qui déclare une EC2 instance Amazon avec une condition d'attente. La condition d'myWaitConditionattente sert à la signalisation, utilise l'DependsOnattribut myWaitConditionHandle pour spécifier que la condition d'attente se déclenchera après la création de la ressource d' EC2 instance Amazon et utilise la Timeout propriété pour spécifier une durée de 4500 secondes pour la condition d'attente. En outre, l'URL présignée signalant la condition d'attente est transmise à l' EC2 instance Amazon avec la UserData propriété de la Ec2Instance ressource, ce qui permet à une application ou à un script exécuté sur cette EC2 instance Amazon de récupérer l'URL présignée et de l'utiliser pour signaler le succès ou l'échec de la condition d'attente. Vous devez utiliser cfn-signal ou créer l’application ou le script qui signale la condition d’attente. La valeur de sortie ApplicationData contient les données renvoyées par le signal de condition d’attente.
Pour de plus amples informations, veuillez consulter Création de conditions d'attente dans un CloudFormation modèle.
JSON
{ "AWSTemplateFormatVersion" : "2010-09-09", "Mappings" : { "RegionMap" : { "us-east-1" : { "AMI" : "ami-0123456789abcdef0" }, "us-west-1" : { "AMI" : "ami-0987654321fedcba0" }, "eu-west-1" : { "AMI" : "ami-0abcdef123456789a" }, "ap-northeast-1" : { "AMI" : "ami-0fedcba987654321b" }, "ap-southeast-1" : { "AMI" : "ami-0c1d2e3f4a5b6c7d8" } } }, "Resources" : { "Ec2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "UserData" : { "Fn::Base64" : {"Ref" : "myWaitHandle"}}, "ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]} } }, "myWaitHandle" : { "Type" : "AWS::CloudFormation::WaitConditionHandle", "Properties" : { } }, "myWaitCondition" : { "Type" : "AWS::CloudFormation::WaitCondition", "DependsOn" : "Ec2Instance", "Properties" : { "Handle" : { "Ref" : "myWaitHandle" }, "Timeout" : "4500" } } }, "Outputs" : { "ApplicationData" : { "Value" : { "Fn::GetAtt" : [ "myWaitCondition", "Data" ]}, "Description" : "The data passed back as part of signalling the WaitCondition." } } }
YAML
AWSTemplateFormatVersion: '2010-09-09' Mappings: RegionMap: us-east-1: AMI: ami-0123456789abcdef0 us-west-1: AMI: ami-0987654321fedcba0 eu-west-1: AMI: ami-0abcdef123456789a ap-northeast-1: AMI: ami-0fedcba987654321b ap-southeast-1: AMI: ami-0c1d2e3f4a5b6c7d8 Resources: Ec2Instance: Type: AWS::EC2::Instance Properties: UserData: Fn::Base64: !Ref myWaitHandle ImageId: Fn::FindInMap: - RegionMap - Ref: AWS::Region - AMI myWaitHandle: Type: AWS::CloudFormation::WaitConditionHandle Properties: {} myWaitCondition: Type: AWS::CloudFormation::WaitCondition DependsOn: Ec2Instance Properties: Handle: !Ref myWaitHandle Timeout: '4500' Outputs: ApplicationData: Value: !GetAtt myWaitCondition.Data Description: The data passed back as part of signalling the WaitCondition.
Utilisation du script d'assistant cfn-signal pour envoyer des signaux à une condition d'attente
Cet exemple montre une ligne de commande cfn-signal qui signale la réussite d’une condition d’attente. Vous devez définir la ligne de commande dans la UserData propriété de l' EC2 instance.
JSON
"UserData": { "Fn::Base64": { "Fn::Join": [ "", [ "#!/bin/bash -xe\n", "/opt/aws/bin/cfn-signal --exit-code 0 '", { "Ref": "myWaitHandle" }, "'\n" ] ] } }
YAML
UserData: 'Fn::Base64': 'Fn::Join': - '' - - | #!/bin/bash -xe - /opt/aws/bin/cfn-signal --exit-code 0 ' - Ref: myWaitHandle - | '
Utilisation de Curl pour envoyer des signaux à une condition d'attente
Cet exemple présente une ligne de commande Curl qui envoie un signal de réussite à une condition d'attente.
curl -T /tmp/a "https://cloudformation-waitcondition-test.s3.amazonaws.com/arn%3Aaws%3Acloudformation%3Aus-east-1%3A034017226601%3Astack%2Fstack-gosar-20110427004224-test-stack-with-WaitCondition--VEYW%2Fe498ce60-70a1-11e0-81a7-5081d0136786%2FmyWaitConditionHandle?Expires=1303976584&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&Signature=ik1twT6hpS4cgNAw7wyOoRejVoo%3D"
Où le fichier/tmp/a contient la structure JSON suivante :
{ "Status" : "SUCCESS", "Reason" : "Configuration Complete", "UniqueId" : "ID1234", "Data" : "Application has completed configuration." }
Cet exemple montre une ligne de commande Curl qui envoie le même signal de réussite, sauf qu'il envoie le code JSON comme paramètre dans la ligne de commande.
curl -X PUT -H 'Content-Type:' --data-binary '{"Status" : "SUCCESS","Reason" : "Configuration Complete","UniqueId" : "ID1234","Data" : "Application has completed configuration."}' "https://cloudformation-waitcondition-test.s3.amazonaws.com/arn%3Aaws%3Acloudformation%3Aus-east-1%3A034017226601%3Astack%2Fstack-gosar-20110427004224-test-stack-with-WaitCondition--VEYW%2Fe498ce60-70a1-11e0-81a7-5081d0136786%2FmyWaitConditionHandle?Expires=1303976584&AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&Signature=ik1twT6hpS4cgNAw7wyOoRejVoo%3D"