AWS CloudFormation frammenti di modello - AWS CloudFormation

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

AWS CloudFormation frammenti di modello

Stack nidificati

Nidificazione di uno stack in un modello

Questo modello di esempio contiene una risorsa stack nidificata denominata myStack. Quando AWS CloudFormation crea uno stack dal modello, crea ilmyStack, il cui modello è specificato nella TemplateURL proprietà. Il valore di output StackRef restituisce l'ID dello stack per myStack e il valore OutputFromNestedStack restituisce il valore di output BucketName dalla risorsa myStack. Il Outputs.nestedstackoutputname formato è riservato per specificare i valori di output dagli stack annidati e può essere utilizzato ovunque all'interno del modello contenitore.

Per ulteriori informazioni, consulta 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

Nidificazione di un stack con i parametri di input in un modello

In questo esempio il modello contiene una risorsa di stack che specifica i parametri di input. Quando AWS CloudFormation crea uno stack da questo modello, utilizza le coppie di valori dichiarate all'interno della Parameters proprietà come parametri di input per il modello utilizzato per creare lo stack. myStackWithParams In questo esempio vengono specificati i parametri InstanceType e KeyName.

Per ulteriori informazioni, consulta 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

Condizione di attesa

Utilizzo di una condizione di attesa con un'EC2istanza Amazon

Importante

Per le risorse Amazon EC2 e Auto Scaling, ti consigliamo di utilizzare un CreationPolicy attributo anziché le condizioni di attesa. Aggiungi un CreationPolicy attributo a tali risorse e utilizza lo script di supporto cfn-signal per segnalare quando il processo di creazione di un'istanza è stato completato correttamente.

Se non puoi utilizzare una politica di creazione, visualizzi il seguente modello di esempio, che dichiara un'EC2istanza Amazon con una condizione di attesa. La condizione di myWaitCondition attesa viene utilizzata myWaitConditionHandle per la segnalazione, utilizza l'DependsOnattributo per specificare che la condizione di attesa verrà attivata dopo la creazione della risorsa dell'EC2istanza Amazon e utilizza la Timeout proprietà per specificare una durata di 4500 secondi per la condizione di attesa. Inoltre, il prefirmato URL che segnala la condizione di attesa viene passato all'EC2istanza Amazon con la UserData proprietà della Ec2Instance risorsa, consentendo così a un'applicazione o uno script in esecuzione su quell'EC2istanza Amazon di recuperare il prefirmato URL e utilizzarlo per segnalare l'esito positivo o negativo della condizione di attesa. È necessario utilizzare cfn-signal o creare l'applicazione o lo script che segnala la condizione di attesa. Il valore di uscita ApplicationData contiene i dati trasmessi dal segnale della condizione di attesa.

Per ulteriori informazioni, consulta Creare condizioni di attesa in un CloudFormation modello, AWS::CloudFormation::WaitCondition, AWS::CloudFormation::WaitConditionHandle e 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.

Utilizzo dello script helper cfn-signal per segnalare una condizione di attesa

Questo esempio mostra una cfn-signal riga di comando che segnala il successo di una condizione di attesa. È necessario definire la riga di comando nella UserData proprietà dell'EC2istanza.

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 - | '

Utilizzo di Curl per segnalare una condizione di attesa

Nell'esempio seguente viene mostrata una riga di comando Curl che segnala l'operazione riuscita a una condizione di attesa.

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"

Dove il file /tmp/a contiene la seguente struttura: JSON

{ "Status" : "SUCCESS", "Reason" : "Configuration Complete", "UniqueId" : "ID1234", "Data" : "Application has completed configuration." }

Questo esempio mostra una riga di comando Curl che invia lo stesso segnale di successo tranne che lo invia JSON come parametro sulla riga di comando.

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"