у меня есть строка, которая сформирована из ряда переменных, которые я использую для разных вещей, таких как теги и имена хостов.
Есть ли способ создания многоразовой строки, которую я могу просто Ref, хотя из шаблона?
любые мысли по этому поводу будут высоко оценены. редактировать: пример будет передавать 2 параметра, такие как ProjectName и Environment, соединяя их
"Fn::Join" : [ "-", [ {"Ref":"ProjectName"}, {"Ref":"Environment"} ] ]
и используя результаты в ряде мест
Ответы:
К сожалению, мои эксперименты должны согласиться с вашим выводом Грэма. Я боролся с этим в течение некоторого времени, но не нашел способа вычислить строку через Fn :: Join и сохранить ее для дальнейшего использования в шаблоне.
Могу ли я поделиться с вами типичным примером?
По состоянию на 2014-09-18 наиболее изощренным способом хранения строкового значения для повторного использования в разделе «Ресурсы» является отображение (второго уровня). Более того, я могу предварительно вычислить Условие и определить, использовать ли строку или нет. Но, к сожалению, сохранение строки просто не работает.
Вот пример строфы такого картирования ...
А вот выражение доступа к нему в Ресурсе
В этом примере Environment является литералом строкового параметра с удобным значением по умолчанию. Так что это очень наглядный пример создания и повторного использования строки. Но вот что говорит процессор CloudFormation…
Ошибка проверки шаблона: Ошибка формата шаблона: каждый атрибут Mappings должен быть строкой или списком.
Поэтому я разделяю ваше разочарование тем, что в шаблоне нет способа обеспечить эффект временной строковой переменной.
... насколько я вижу. Но ответ, который вы изначально получили, говорит об обратном (хотя и без примера).
Так что, если у кого-нибудь есть пример обходного решения, то, пожалуйста, поделитесь им?
источник
Вы можете использовать параметры или сопоставления для хранения строк, которые вы можете использовать в своих шаблонах.
источник
к сожалению, я обнаружил, что невозможно сделать то, что я пытался достичь. это не помогает, но это так.
источник
На самом деле мы делаем имя нашего стека CloudFormation точно
{ProjectName}-{Environment}
во времяaws cloudformation deploy
. Рассматривали ли вы это соглашение об именах для вашего имени стека?После этого вы можете просто сослаться на это как
{ "Fn:Sub": "${AWS::StackName}" }
.источник