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
Argomenti
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.
formato è riservato per specificare i valori di output dagli stack annidati e può essere utilizzato ovunque all'interno del modello contenitore.nestedstackoutputname
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'DependsOn
attributo 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"