在Cloudformation中的Fn :: Sub内部使用Ref

时间:2018-07-17 11:08:10

标签: amazon-web-services amazon-cloudformation

我正在尝试将fn::sub与内部引用一起使用。

我有一个字符串“ Comment xyz $ {NAME}”。该字符串作为堆栈的参数。假设参数名称为“ test”。

我现在想使用Cloudformation脚本中的fn::sub函数替换字符串中的$ {NAME}。

fn::sub:[{"Ref":"test"},{"NAME":"balaji"}]

预期输出为“评论xyz balaji”。

但是,这是我得到的错误:

  

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

让我知道这里需要解决的问题。

1 个答案:

答案 0 :(得分:1)

根据docsFn::Sub中的第一个参数必须为:

  

带有变量的字符串,AWS CloudFormation在运行时将其替换为其关联的值。将变量写为$ {MyVarName}。变量可以是模板参数名称,资源逻辑ID,资源属性或键值映射中的变量。 如果仅指定模板参数名称,资源逻辑ID和资源属性,请不要指定键值映射。

(添加了强调。)

因此,在撰写本文时,这是不可能的。

如果您有一个参数:

"test": {
  "Type": "String",
  "Default": "Comment xyz ${NAME}"
}

然后替换:

"Fn::Sub": ["${test}", {"NAME": "balaji"}]

替换将产生文字字符串Comment xyz ${NAME}