На жаль, мої експерименти повинні погодитися з вашим висновком Graeme. Я деякий час боровся з цим, але не знайшов способу обчислити String через Fn :: Join і зберегти його для подальшого в шаблоні.
Чи можу я поділитися з вами типовим прикладом?
Станом на 2014-09-18, найскладнішим способом зберігання рядкового значення для повторного використання у розділі "Ресурси" було б шляхом (другого рівня) картографування. Ще краще, я можу попередньо обчислити умову і визначити, використовувати рядок чи ні. Але, на жаль, зберігання рядка просто не працює.
Ось приклад строфи такого картографування ...
"LoadBalancerBucketMap": {
"BucketName": {
"string": {
"Fn::Join": [
"-",
[
"mylb",
{
"Ref": "Environment"
},
"logs"
]
]
}
}
},
І ось вираз доступу до нього в Ресурсі
"S3BucketName": {
"Fn::FindInMap": [
"LoadBalancerBucketMap",
"BucketName",
"string"
}
У цьому прикладі Середовище - це буквальний параметр рядка зі зручним за замовчуванням. Тож це дуже чіткий приклад створення та повторного використання рядка. Але ось що говорить процесор CloudFormation ...
Помилка перевірки шаблону: Помилка формату шаблону: Кожен атрибут Mappings повинен бути рядком або списком.
Тому я поділяю ваше розчарування, що, мабуть, не існує способу в шаблоні забезпечити ефект тимчасової змінної рядка.
… Поки я можу бачити. Але відповідь, яку ви отримали спочатку, сказала протилежне цьому (хоча без прикладу).
Тож якщо у когось є приклад вирішення, то, будь ласка, вони могли б поділитися?