AWS CloudFormation extraits de modèles - AWS CloudFormation

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.

AWS CloudFormation extraits de modèles

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 AWS 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 Outputs.nestedstackoutputname format est réservé à la spécification des valeurs de sortie à partir de piles imbriquées et peut être utilisé n'importe où dans le modèle contenant.

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 AWS 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 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'EC2instance Amazon et utilise la Timeout propriété pour spécifier une durée de 4500 secondes pour la condition d'attente. En outre, le présigné URL qui indique la condition d'attente est transmis à l'EC2instance 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 le présigné URL 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 plus d'informations, consultez Création de conditions d'attente dans un CloudFormation modèle, AWS::CloudFormation::WaitCondition, AWS::CloudFormation::WaitConditionHandle et cfn-signal.

JSON

{ "AWSTemplateFormatVersion" : "2010-09-09", "Mappings" : { "RegionMap" : { "us-east-1" : { "AMI" : "ami-0ff8a91507f77f867" }, "us-west-1" : { "AMI" : "ami-0bdb828fd58c52235" }, "eu-west-1" : { "AMI" : "ami-047bb4163c506cd98" }, "ap-northeast-1" : { "AMI" : "ami-06cd52961ce9f0d85" }, "ap-southeast-1" : { "AMI" : "ami-08569b978cc4dfa10" } } }, "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-0ff8a91507f77f867 us-west-1: AMI: ami-0bdb828fd58c52235 eu-west-1: AMI: ami-047bb4163c506cd98 ap-northeast-1: AMI: ami-06cd52961ce9f0d85 ap-southeast-1: AMI: ami-08569b978cc4dfa10 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 cfn-signal commande qui indique le succès d'une condition d'attente. Vous devez définir la ligne de commande dans la UserData propriété de l'EC2instance.

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 suivante : JSON

{ "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'elle l'envoie JSON en tant que paramètre sur 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"