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ć?