如何在 AWS CloudFormation 中将 Fn::Sub 函数与 Fn::FindInMap、Fn::ImportValue 或其他支持的函数配合使用?

上次更新时间:2020 年 8 月 26 日

我想在 AWS CloudFormation 中将 Fn::Sub 函数与 Fn::FindInMap、Fn::ImportValue 或其他支持的函数配合使用。

简短描述

您可以使用 Fn::Sub 函数替换支持的函数或以字符串的形式替换其他函数。

解决方法

将 Fn::Sub 与支持的函数配合使用

在 AWS CloudFormation 模板中,您可以使用 Fn::Sub 替换其他支持的函数,如 Fn::FindInMap

如果使用的是 JSON 模板,请将 Var1NameVar2Name 替换为 Var1ValueVar2Value。例如:

{ "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"] }

使用 Fn::Sub 作为字符串来替换其他函数

您可以使用 Fn::Sub 替换其他函数,例如 RefFn::GetAtt

例如,您可以使用 Fn::Sub 替换 Ref

JSON:

"Name": { "Fn::Sub": "www.${Domain}"}

YAML:

Name: !Sub www.${Domain}

这篇文章对您有帮助吗?


您是否需要账单或技术支持?