в хмарній формі можна створити рядок для багаторазового використання?


14

У мене є рядок, що формується з ряду змінних, які я використовую для багатьох різних речей, таких як Теги та імена хостів.

Чи існує спосіб створення рядка для багаторазового використання, який я можу просто перечитати, хоча з шаблону?

будь-які думки з цього приводу були б вдячні. edit: Прикладом може слугувати 2 параметри, такі як ProjectName та Environment, що приєднуються до них

"Fn::Join" : [ "-", [ {"Ref":"ProjectName"}, {"Ref":"Environment"} ] ]

та використання результатів у ряді місць


Ви говорите про параметр? docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/…
Едвін

Я думаю, що Трансформації - це те, що AWS забезпечує для цього. На жаль, вони поки не підтримують псевдоніми YAML.
jgomo3

Відповіді:


7

На жаль, мої експерименти повинні погодитися з вашим висновком Graeme. Я деякий час боровся з цим, але не знайшов способу обчислити String через Fn :: Join і зберегти його для подальшого в шаблоні.

Чи можу я поділитися з вами типовим прикладом?

Станом на 2014-09-18, найскладнішим способом зберігання рядкового значення для повторного використання у розділі "Ресурси" було б шляхом (другого рівня) картографування. Ще краще, я можу попередньо обчислити умову і визначити, використовувати рядок чи ні. Але, на жаль, зберігання рядка просто не працює.

Ось приклад строфи такого картографування ...

    "LoadBalancerBucketMap": {
        "BucketName": {
            "string": {
                "Fn::Join": [
                    "-",
                    [
                        "mylb",
                        {
                            "Ref": "Environment"
                        },
                        "logs"
                    ]
                ]
            }
        }
    },

І ось вираз доступу до нього в Ресурсі

                "S3BucketName": {
                    "Fn::FindInMap": [
                        "LoadBalancerBucketMap",
                        "BucketName",
                        "string"
                    }

У цьому прикладі Середовище - це буквальний параметр рядка зі зручним за замовчуванням. Тож це дуже чіткий приклад створення та повторного використання рядка. Але ось що говорить процесор CloudFormation ...

Помилка перевірки шаблону: Помилка формату шаблону: Кожен атрибут Mappings повинен бути рядком або списком.

Тому я поділяю ваше розчарування, що, мабуть, не існує способу в шаблоні забезпечити ефект тимчасової змінної рядка.

… Поки я можу бачити. Але відповідь, яку ви отримали спочатку, сказала протилежне цьому (хоча без прикладу).

Тож якщо у когось є приклад вирішення, то, будь ласка, вони могли б поділитися?


2

Ви можете використовувати парами або відображення для зберігання рядків, які ви можете використовувати у своїх шаблонах.


1
Це працює лише для статичних рядків. ОП спеціально просила обчислити рядки, що, здається, взагалі неможливо.
Джо

0

на жаль, я виявив, що не можна робити того, чого я намагався досягти. це не допомагає, але є.


0

Ми фактично робимо назву стека CloudFormation саме {ProjectName}-{Environment}під час aws cloudformation deploy. Ви розглядали цю угоду про іменування свого імені стека?

Згодом ви можете просто посилатися на це { "Fn:Sub": "${AWS::StackName}" }.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.