我想通過使用AWS::CloudFormation::Stack
資源類型將CloudFormation模板嵌套到另一個模板中。嵌套模板的參數類型爲List<AWS::EC2::Subnet::Id>
。將List <AWS :: EC2 :: Subnet :: Id>類型的參數傳遞給嵌套的CloudFormation模板
單獨地,嵌套模板運行得很好。但是當嵌入AWS控制檯時說遇到不受支持的屬性ELBSubnetList。
將參數的類型更改爲字符串/逗號分隔列表似乎是一種解決方法,詳情請參考here,但在通過AWS控制檯交互創建模板時,我會丟失花哨的UI。
你有什麼想法如何通過子網ID列表作爲參數?
這是嵌入的模板:
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Parameters" : {
"ELBSubnetList" : {
"Type" : "List<AWS::EC2::Subnet::Id>",
"Description" : "Subnet List for Elastic Loadbalancer"
},
"ELBSecurityGroupList": {
"Type": "List<AWS::EC2::SecurityGroup::Id>",
"Description": "Security Group List for Elastic Loadbalancer"
}
},
"Resources" : {
"ELB" : {
"Type" : "AWS::ElasticLoadBalancing::LoadBalancer",
"Properties" : {
"Subnets": { "Ref": "ELBSubnetList" },
"CrossZone" : "true",
"SecurityGroups": { "Ref": "ELBSecurityGroupList" },
"LBCookieStickinessPolicy" : [ {
"PolicyName" : "CookieBasedPolicy",
"CookieExpirationPeriod" : "30"
}],
"Listeners" : [ {
"LoadBalancerPort" : "80",
"InstancePort" : "80",
"Protocol" : "HTTP",
"PolicyNames" : [ "CookieBasedPolicy" ]
} ],
"HealthCheck" : {
"Target" : "HTTP:80/wordpress/wp-admin/install.php",
"HealthyThreshold" : "2",
"UnhealthyThreshold" : "5",
"Interval" : "10",
"Timeout" : "5"
}
}
}
}
}
這embedds模板:
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Parameters": {
"ChildTemplate": {
"Type": "String",
"Default": "https://s3.eu-central-1.amazonaws.com/cf-templates-xxxxxxxxxxx-eu-central-1/sample_child.template"
},
"ELBSubnetList" : {
"Type" : "List<AWS::EC2::Subnet::Id>",
"Description" : "Subnet List for Elastic Loadbalancer"
},
"ELBSecurityGroupList": {
"Type": "List<AWS::EC2::SecurityGroup::Id>",
"Description": "Security Group List for Elastic Loadbalancer"
}
},
"Resources": {
"Child": {
"Type": "AWS::CloudFormation::Stack",
"Properties": {
"TemplateURL": { "Ref": "ChildTemplate" },
"Parameters": {
"ELBSubnetList": { "Ref": "ELBSubnetList" },
"ELBSecurityGroupList": { "Ref": "ELBSecurityGroupList" }
}
}
}
}
}
根據CloudFormation文檔,這是不受支持的,只有字符串可以傳遞到今天的嵌套堆棧。 http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stack.html#cfn-cloudformation-stack-parameters –
您是否嘗試過基於Lambda的自定義資源? –
@MichalGasek你是對的。在修復了AWS- CloudFormation :: Stack'-Resource中的拼寫錯誤之後,錯誤信息變得更加清晰:屬性值_value參數必須是帶有String(或簡單類型)屬性的對象_ – Stephan