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à.
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' EC2 istanza 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' EC2 istanza Amazon e utilizza la Timeout
proprietà per specificare una durata di 4500 secondi per la condizione di attesa. Inoltre, l'URL predefinito che segnala la condizione di attesa viene passato all' EC2 istanza Amazon con la UserData
proprietà della Ec2Instance
risorsa, consentendo così a un'applicazione o a uno script in esecuzione su quell' EC2 istanza Amazon di recuperare l'URL predefinito e utilizzarlo per segnalare l'esito positivo o negativo della condizione di attesa. Devi 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, consultaCreare condizioni di attesa in un CloudFormation modello, AWS::CloudFormation::WaitCondition, AWS::CloudFormation::WaitConditionHandle, ecfn-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' EC2 istanza.
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 file /tmp/a contiene la seguente struttura JSON:
{
"Status" : "SUCCESS",
"Reason" : "Configuration Complete",
"UniqueId" : "ID1234",
"Data" : "Application has completed configuration."
}
In questo esempio viene mostrata una riga di comando Curl che invia lo stesso segnale di operazione riuscita, con la differenza che come parametro invia la struttura JSON 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"