我正在尝试将fn::sub
与内部引用一起使用。
我有一个字符串“ Comment xyz $ {NAME}”。该字符串作为堆栈的参数。假设参数名称为“ test”。
我现在想使用Cloudformation脚本中的fn::sub
函数替换字符串中的$ {NAME}。
fn::sub:[{"Ref":"test"},{"NAME":"balaji"}]
预期输出为“评论xyz balaji”。
但是,这是我得到的错误:
模板验证错误:模板错误:一个或多个Fn :: Sub 内在函数未指定预期参数。指定一个字符串 作为第一个参数,以及可选的第二个参数来指定 替换为字符串中的值的映射
让我知道这里需要解决的问题。
答案 0 :(得分:1)
根据docs,Fn::Sub
中的第一个参数必须为:
带有变量的字符串,AWS CloudFormation在运行时将其替换为其关联的值。将变量写为$ {MyVarName}。变量可以是模板参数名称,资源逻辑ID,资源属性或键值映射中的变量。 如果仅指定模板参数名称,资源逻辑ID和资源属性,请不要指定键值映射。
(添加了强调。)
因此,在撰写本文时,这是不可能的。
如果您有一个参数:
"test": {
"Type": "String",
"Default": "Comment xyz ${NAME}"
}
然后替换:
"Fn::Sub": ["${test}", {"NAME": "balaji"}]
替换将产生文字字符串Comment xyz ${NAME}
。