我在AWS站點上發現了一個很棒的文檔,介紹如何在第二個實例開始出現之前讓一個實例完全啓動並設置。它在https://aws.amazon.com/blogs/devops/tag/cloudformation/page/2/Cloudformation「CreationPolicy」屬性不起作用
文檔使用CreationPolicy屬性和cfn-signal通知AWS Cloudformation Instance1已經啓動。我嘗試了代碼。它運行。但問題是Instance2首先出現,而不是等待Instance1出現。這是代碼,當實例出現時,我附加了屏幕截圖。
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "EC2 Head Node Instance ",
"Resources": {
"EC2Instance1": {
"Type": "AWS::EC2::Instance",
"CreationPolicy" : {
"ResourceSignal" : {
"Timeout": "PT10M",
"Count" : "1"
}
},
"Properties": {
"ImageId": "ami-3723c04f",
"UserData":{
"Fn::Base64":{
"Fn::Join": ["", [
"<script>\n",
"cfn-signal.exe -e 0 ",
" --stack ", {"Ref" : "AWS::StackName"},
" --resource EC2Instance1",
" --region ", {"Ref" : "AWS::Region"}, "\n" ,
"</script>\n"
]
]
}
},
"Tags" : [
{"Key" : "Name", "Value" : "QRM Head Node"}
]
}
},
"EC2Instance2": {
"Type": "AWS::EC2::Instance",
"Properties": {
"ImageId": "ami-3723c04f",
"Tags" : [{"Key" : "Dependency", "Value" : "EC2Instance1"}
]
}
}
}
如果我們通過使用「DependsOn」屬性確保EC2Instance2只會在EC2Instance1之後出現,那麼在userdata部分使用cfn-signal來通知EC1已經出現了什麼情況? – Jason
使用'DependsOn'將確保EC2Instance2只會在EC2Instance1「創建」後纔會出現。 另一方面,如果您想在EC2Instance1中進行一些設置,比如安裝所需的軟件等,那麼您可以使用'cfn-signal',並且EC2Instance2只會在安裝完成後纔會出現。在這種情況下,可以使用'cfn-signal'。 – krisnik
根據你的問題,我認爲「DependsOn」適合你的要求。 – krisnik