czy w chmurze można utworzyć ciąg wielokrotnego użytku?

14

Mam ciąg utworzony z wielu zmiennych, których używam do wielu różnych rzeczy, takich jak tagi i nazwy hostów.

Czy istnieje sposób na utworzenie ciągu wielokrotnego użytku, który mogę po prostu zrezygnować z szablonu?

wszelkie przemyślenia na ten temat byłyby bardzo mile widziane. edycja: Przykładem mogą być 2 parametry, takie jak ProjectName i Environment, łączące je

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

i wykorzystanie wyników w wielu miejscach

graeme
źródło
Myślę, że transformacje są tym, co zapewnia AWS. Niestety nie obsługują jeszcze aliasów YAML.
jgomo3

Odpowiedzi:

7

Niestety moje eksperymenty są zgodne z twoim wnioskiem Graeme. Walczyłem z tym przez jakiś czas, ale nie znalazłem sposobu na obliczenie ciągu przez Fn :: Join i zachowanie go na później w szablonie.

Czy mogę podzielić się z tobą typowym przykładem?

Według stanu na dzień 18.09.2014 najbardziej zaawansowanym sposobem przechowywania wartości ciągu do ponownego wykorzystania w sekcji Zasoby byłoby mapowanie (drugiego poziomu). Co więcej, mogę wstępnie obliczyć warunek i ustalić, czy użyć ciągu, czy nie. Ale niestety przechowywanie sznurka po prostu nie działa.

Oto przykładowa zwrotka takiego mapowania…

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

A oto wyrażenie dostępu do niego w zasobie

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

W tym przykładzie Środowisko to dosłowny ciąg znaków Parametr z wygodną wartością domyślną. To jest bardzo wyraźny przykład tworzenia i ponownego używania łańcucha. Ale oto, co mówi procesor CloudFormation…

Błąd sprawdzania poprawności szablonu: Błąd formatu szablonu: Każdy atrybut Odwzorowania musi być ciągiem lub listą.

Podzielam więc twoją frustrację, że szablon nie wydaje się zapewniać efektu tymczasowej zmiennej łańcuchowej.

… O ile widzę. Ale odpowiedź, którą pierwotnie otrzymałeś, powiedziała coś wręcz przeciwnego (choć bez przykładu).

Jeśli więc ktoś ma przykładowe obejście problemu, proszę, czy może się podzielić?

Johnz
źródło
2

Za pomocą parametrów lub odwzorowań można przechowywać ciągi znaków, których można używać w szablonach.

Drew Khoury
źródło
1
Działa to tylko w przypadku ciągów statycznych. OP specjalnie poprosił o obliczone ciągi, co wcale nie wydaje się możliwe.
Joe
0

niestety odkryłem, że nie można zrobić tego, co próbowałem osiągnąć. to nie pomaga, ale jest.

graeme
źródło
0

Właściwie tworzymy nazwę stosu CloudFormation dokładnie {ProjectName}-{Environment}podczas aws cloudformation deploy. Czy rozważałeś tę konwencję nazewnictwa dla nazwy stosu?

Następnie możesz po prostu nazwać to jako { "Fn:Sub": "${AWS::StackName}" }.

Ryan McGeary
źródło