如何將一個雲形成模板文件之間的參數傳遞到aws中的另一個雲形成模板文件? 我不是在討論嵌套模板,因爲我知道它們是單獨一個CFT中的單獨資源塊,請糾正我,如果我錯了。如何在一個雲形成之間傳遞參數到另一個雲形成模板
回答
它只能在堆棧之間傳遞參數,而不是在模板之間傳遞 - 模板只是JSON結構。
你可以這樣說:
在第一個模板,創建輸出值是這樣的:
"Outputs" : {
"ParentVPC" : {
"Value" : {"Ref":"VPC"},
"Description" : "VPC ID"
},
...
}
然後,在第二個模板,創建這樣的參數:
"Parameters" : {
"ParentVPC" : {
"Type" : "AWS::EC2::VPC::Id",
},
...
}
從第二個模板創建堆棧時,請在從第一個模板創建的堆棧上調用describe-stack
以獲取輸出值,並將它們作爲參數傳遞給create-stack
。
我能夠將參數從一個CFT傳遞給另一個: 我在子CFT中定義了參數,並在父CFT中傳遞了它們的值。這裏有一個例子:
家長CFT(CFT1)
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Chef HA AWS Template",
"Parameters" : {
"ChefServerAWSRegion" : {
"Description" : "Choose deployment target from list",
"Type" : "String",
"AllowedValues" : ["deveast1", "qaeast1", "prodeast1","prodwest1","prodwest2"],
"Default": "deveast1"
}
},
"Mappings": {
"deveast1":
{
"chefstackurl":{
"frontend" : "https://s3.amazonaws.com/tbdchef/frontendinstance.json",
},
"a":
{
"sgBlueStripe": "sg-81c09fe5",
"sgSharedServices": "sg-82c09fe6",
}
}
}
}
子模板(其中值的定義,我遵守了我的邏輯把基礎設施建設:
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Chef HA AWS Template",
"Parameters": {
"sgBlueStripe": {
"Description": "sgBlueStripe",
"Type": "String"
},
"sgSharedServices": {
"Description": "sgSharedServices",
"Type": "String"
}
}
"Resources": {
"FrontendInstance":
{
"Type": "AWS::EC2::Instance",
"Properties": {
"DisableApiTermination": "true",
"SecurityGroupIds": [
{
"Ref": "sgBlueStripe"
},
{
"Ref": "sgSharedServices"
}
],
}
}
}
有協調雲形成模板的兩種主要方式:
- 使用Cloud Formation Nested Stacks。這允許一個clou d形成堆棧來創建和管理一個單獨的堆棧。如果您需要堆棧中的其他資源,則可以使用
Fn::GetAtt
檢索堆棧的輸出。 - 使用非AWS工具(如Ansible)或純bash腳本進行編排。 Ansible可以很容易地檢索一個堆棧的輸出,並通過花葯,例如:
,我認爲那是你真正需要的是創造一個lambda,將檢索另一個cloudformation的輸出,並揭露他們在你的雲運行中。
您然後檢索從NetworkStack
輸出像這樣。
"NetworkInfo": {
"Type": "Custom::NetworkInfo",
"Properties": {
"ServiceToken": { "Fn::GetAtt" : ["LookupStackOutputs", "Arn"] },
"StackName": {
"Ref": "NetworkStackName"
}
}
}
,並用它們做:
"SubnetId" : { "Fn::GetAtt": [ "NetworkInfo", "PublicSubnet" ] }
我使用它自己,它用我們每個月LAMBDA自由執行分鐘合身。
檢出the official documentation for cross-stack references以及如何使用它。
其基本思想是將共享資源放入自己的堆棧中,以便其他堆棧可以引用這些資源。這會減少所有云模板中的複製/粘貼。
例如,您可能有多個相關的Web應用程序,它們的服務器使用相同的安全組規則。您可以將每個Web應用程序的每個雲形成模板中的安全組多次定義爲相同的安全組,然後將該安全組放入其自己的模板/堆棧中,將安全組ID標識爲輸出,然後將所有Web應用程序'cf模板,您可以導入該安全組標識並將其引用到您的實例的安全組。這會導致代碼重複性降低,並使問題分離,因爲網絡工程師可以管理VPC /子網/安全組周圍的安全性,並且只需要擔心服務器/應用程序。
那正是我現在正在做的,謝謝 –
太棒了!我注意到你的問題是一年前沒有正式答案,所以我想我會插話進去。 –
- 1. 如何組織雲形成模板?
- 2. 從DynamoDB表生成雲形成模板
- 3. 有沒有從一個雲的形成模板
- 4. 雲的形成模板 - 創建錯誤
- 5. AWS雲的形成輸出模板
- 6. AWS RDS SQL Server的雲形成模板
- 7. AWS雲形成模板在所有AZ上部署雲觀察
- 8. 如何從一個自定義的AMI通過雲的形成模板
- 9. 如何正確地將EFS FileSystem ID傳遞給雲形成模板?
- 10. 傳遞參數在樹枝(從模板到另一個模板)
- 11. 雲形成:2個EIPs,2PIP在一個ENI
- 12. 如何將一個參數從一個XSLT模板傳遞到另一個?
- 13. 傳遞參數,形成HTML
- 14. 如何將訪問權限設置爲雲形成模板?
- 15. 如何禁用雲形成模板中的子堆回滾?
- 16. 傳遞一個變量形成
- 17. XSLT - 將參數從一個模板傳遞到另一個模板
- 18. AWS雲形成與CI/CD
- 19. aws雲形成更新包
- 20. 使用一個窗口形成遞增另一種形式
- 21. Rails的形成另一個模型
- 22. 形成從另一個模型關聯
- 23. 爲什麼GetAttr無法在雲形成模板參數上工作?
- 24. 如何避免雲的形成
- 25. 如何將數組從一個函數傳遞到另一個函數作爲雲函數的參考
- 26. Rails:如何將參數從一種形式傳遞到另一種形式
- 27. 將信息從一個模板傳遞到另一個模板
- 28. 將變量從一個模板傳遞到另一個模板
- 29. 將值從一個模板傳遞到另一個模板
- 30. 我需要一個使用雲形成的dynamodb列表
如何從第一個模板中調用第二個模板?目前我正在使用這種方法,顯然是不正確的..''http:// stackoverflow.com/questions/32147966 /傳遞參數在嵌套雲形成模板,我 –
沒有辦法做到這一點 - 當你創建第一個堆棧時,第二個堆棧不存在,所以沒有什麼可以查找的。 – bsvingen
如果您想在兩個堆棧之間共享數據,則可以始終創建他們都訪問的第三個堆棧。 – bsvingen