в облачной информации можно ли создать строку многократного использования?


14

у меня есть строка, которая сформирована из ряда переменных, которые я использую для разных вещей, таких как теги и имена хостов.

Есть ли способ создания многоразовой строки, которую я могу просто Ref, хотя из шаблона?

любые мысли по этому поводу будут высоко оценены. редактировать: пример будет передавать 2 параметра, такие как ProjectName и Environment, соединяя их

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

и используя результаты в ряде мест


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

Я думаю, что для этого AWS предоставляет трансформации. К сожалению, они еще не поддерживают псевдонимы YAML.
jgomo3

Ответы:


7

К сожалению, мои эксперименты должны согласиться с вашим выводом Грэма. Я боролся с этим в течение некоторого времени, но не нашел способа вычислить строку через Fn :: Join и сохранить ее для дальнейшего использования в шаблоне.

Могу ли я поделиться с вами типичным примером?

По состоянию на 2014-09-18 наиболее изощренным способом хранения строкового значения для повторного использования в разделе «Ресурсы» является отображение (второго уровня). Более того, я могу предварительно вычислить Условие и определить, использовать ли строку или нет. Но, к сожалению, сохранение строки просто не работает.

Вот пример строфы такого картирования ...

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

А вот выражение доступа к нему в Ресурсе

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

В этом примере Environment является литералом строкового параметра с удобным значением по умолчанию. Так что это очень наглядный пример создания и повторного использования строки. Но вот что говорит процессор 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.