首页 > 解决方案 > 在 CloudFormation 中替换 Fn::Join 返回的字符串时,Fn::Sub 不起作用

问题描述

我正在尝试在 CloudFormationFn::JoinFn::Sub一起工作。

根据文档,Fn::Join返回一个字符串并对字符串进行Fn::Sub操作。这是我正在尝试使用的 JSON 语法(显然是更大模板的一部分):

{
    "Fn::Sub": [ 
      {
       "Fn::Join" : [ ":", [ "a", "b", "www.${Domain}" ] ]
      },
      {
        "Domain": "123"
      }
    ]
}

此语法生成此错误错误:

模板错误:一个或多个 Fn::Sub 内部函数未指定预期参数。指定一个字符串作为第一个参数,以及一个可选的第二个参数来指定要在字符串中替换的值的映射

标签: amazon-web-servicesamazon-cloudformation

解决方案


  1. 请不要使用 json,它是如此复杂且难以阅读。使用 yaml 甚至更好地迁移到 cdk!

  2. 这可以用一个子来解决。

{
    "Fn::Sub": [
       "a:b:www.${Domain}",
      {
        "Domain": "123"
      }
    ]
}

推荐阅读