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
Odpowiedzi:
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…
A oto wyrażenie dostępu do niego w zasobie
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ć?
źródło
Za pomocą parametrów lub odwzorowań można przechowywać ciągi znaków, których można używać w szablonach.
źródło
niestety odkryłem, że nie można zrobić tego, co próbowałem osiągnąć. to nie pomaga, ale jest.
źródło
Właściwie tworzymy nazwę stosu CloudFormation dokładnie
{ProjectName}-{Environment}
podczasaws 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}" }
.źródło