Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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

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

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

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

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

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

В этом примере Environment - это буквальный строковый параметр с удобным значением по умолчанию. Это очень наглядный пример создания и повторного использования строки. Но вот что говорит процессор CloudFormation ...

Ошибка проверки шаблона: ошибка формата шаблона: каждый атрибут Mappings должен быть строкой или списком.

Итак, я разделяю ваше разочарование по поводу того, что в шаблоне, похоже, нет способа обеспечить эффект временной строковой переменной.

… Насколько я понимаю. Но исходный ответ, который вы получили, говорит об обратном (хотя и без примера).

Итак, если у кого-то есть пример обходного пути, не могли бы они поделиться?

Вы можете использовать параметры или сопоставления для хранения строк, которые вы можете использовать в своих шаблонах.

к сожалению, я обнаружил, что невозможно сделать то, что я пытался достичь. это не помогает, но вот оно.

На самом деле мы делаем имя стека CloudFormation точно {ProjectName}-{Environment} в течение aws cloudformation deploy. Вы учли это соглашение об именах для своего имени стека?

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