Я пытаюсь использовать fn::sub с Ref.
У меня есть строка «Комментарий xyz $ {NAME}». Эта строка поступает в стек как параметр. Скажем, имя параметра - «test».
Теперь я хотел бы заменить $ {NAME} в строке, используя функцию fn::sub внутри сценария Cloudformation.
fn::sub:[{"Ref":"test"},{"NAME":"balaji"}]
Ожидаемый результат - это «Комментарий xyz balaji».
Однако я получаю вот такую ошибку:
Template validation error: Template error: One or more Fn::Sub intrinsic functions don't specify expected arguments. Specify a string as first argument, and an optional second argument to specify a mapping of values to replace in the string
Сообщите мне, что здесь нужно исправить.





Согласно документы, первый параметр в Fn::Sub должен быть:
A string with variables that AWS CloudFormation substitutes with their associated values at runtime. Write variables as ${MyVarName}. Variables can be template parameter names, resource logical IDs, resource attributes, or a variable in a key-value map. If you specify only template parameter names, resource logical IDs, and resource attributes, don't specify a key-value map.
(Курсив добавлен.)
Таким образом, (на момент написания) это сделать невозможно.
Если у вас был параметр:
"test": {
"Type": "String",
"Default": "Comment xyz ${NAME}"
}
А потом подмена:
"Fn::Sub": ["${test}", {"NAME": "balaji"}]
В результате подстановки будет получена буквальная строка Comment xyz ${NAME}.