如何在 AWS CloudFormation 中将 Fn::Sub 函数与 Fn::FindInMap、Fn::ImportValue 或其他支持的函数配合使用?
上次更新时间:2020 年 8 月 26 日
我想在 AWS CloudFormation 中将 Fn::Sub 函数与 Fn::FindInMap、Fn::ImportValue 或其他支持的函数配合使用。
简短描述
解决方法
将 Fn::Sub 与支持的函数配合使用
在 AWS CloudFormation 模板中,您可以使用 Fn::Sub 替换其他支持的函数,如 Fn::FindInMap。
如果使用的是 JSON 模板,请将 Var1Name 和 Var2Name 替换为 Var1Value 和 Var2Value。例如:
{ "Fn::Sub" : [ String, { Var1Name: Var1Value, Var2Name: Var2Value } ] }
以下 JSON 示例说明了如何将 ${Domain} 替换为 Fn::FindInMap 的解析值(如果使用的是 Fn::FindInMap 中的变量):
"Name" : { "Fn::Sub": [ "www.${Domain}", { "Domain": { "Fn::FindInMap" : [ "ABC", "DomainParameters", "DomainName"] }} ]}
如果使用的是 YAML 模板,则可以使用键值对替换多个变量。例如:
Fn::Sub:
- String
- Var1Name: Var1Value
Var2Name: Var2Value
以下 YAML 示例说明了如何将 ${Domain} 替换为 { "Fn::FindInMap" : [ "ABC", "DomainParameters", "DomainName"] }}(如果使用的是 Fn::FindInMap 中的变量):
Name: !Sub
- www.${Domain}
- { Domain: !FindInMap ["ABC", "DomainParameters", "DomainName"] }
"Name": { "Fn::Sub": "www.${Domain}"}
YAML:
Name: !Sub www.${Domain}