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

Bal*_*i V 5 amazon-web-services aws-cloudformation

我正在尝试使用fn::sub其中的Ref。

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

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

fn::sub:[{"Ref":"test"},{"NAME":"balaji"}]
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Ale*_*vey 11

根据docs,第一个参数Fn::Sub必须是:

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

(加了重点。)

因此,(在撰写本文时)不可能做到这一点。

如果你有一个参数:

"test": {
  "Type": "String",
  "Default": "Comment xyz ${NAME}"
}
Run Code Online (Sandbox Code Playgroud)

然后替换:

"Fn::Sub": ["${test}", {"NAME": "balaji"}]
Run Code Online (Sandbox Code Playgroud)

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

  • 在这种情况下如何“修复它”将使用 Fn::Join 代替。https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-join.html (3认同)