マスター テンプレートから子テンプレートにリスト パラメーターを渡そうとしていますが、2 つのエラーが発生しています。これらは、マスター テンプレートの現在のパラメーターです。
"Parameters": {
"ELBSubnets": {
"Default": "subnet-5d8fea67,subnet-3e35cf15",
"Type": "CommaDelimitedList"
},
"LCKeyPair": {
"Default": "key-master",
"Type": "String"
},
"LCSecurityGroups": {
"Default": "sg-10a15c74,sg-880e5fec",
"Type": "CommaDelimitedList"
}
},
子テンプレートに渡すときに、同じテンプレートのこのメソッドで参照されています。
"ChildTempate1": {
"Properties": {
"Parameters": {
"ELBSubnets": {
"Ref": "ELBSubnets"
},
"KeyPair": {
"Ref": "LCKeyPair"
},
"LCSecurityGroups": {
"Ref": "LCSecurityGroups"
}
},
子テンプレートでは、それらはまったく同じように宣言されています。
"Parameters": {
"ELBSubnets": {
"Type": "CommaDelimitedList"
},
"LCKeyPair": {
"Type": "String"
},
"LCSecurityGroups": {
"Type": "CommaDelimitedList"
}
},
そして、それらは子テンプレートのこのメソッドで参照されています。
"KeyName": {
"Ref": "LCKeyPair"
},
"SecurityGroups": {
"Fn::Join": [
",",
[
{
"Ref": "LCSecurityGroups"
}
]
]
}
},
これはテンプレートの別の部分です。
"Subnets": {
"Fn::Join": [
",",
[
{
"Ref": "ELBSubnets"
}
]
]
}
},
マスター テンプレートで fn::join を使用しようとすると、次のように表示されます
「テンプレート検証エラー: テンプレート エラー: すべての Fn::Join オブジェクトには、(1) 文字列区切り文字と (2) 結合する文字列のリスト、または文字列のリストを返す関数 (Fn:: など) の 2 つのパラメーターが必要です。 GetAZs) に参加します。」
マスター テンプレートで fn::join を使用しない場合、エラーは
プロパティ パラメータの値は、文字列 (または単純型) プロパティを持つオブジェクトである必要があります
子テンプレートの同じパラメーターに fn::join があるかどうかに関係なく。
どちらのテンプレートもここにあります: https://github.com/slimg00dy/Troposphere-CloudformationTests