Leider stimmen meine Experimente mit Ihrer Schlussfolgerung Graeme überein. Ich habe einige Zeit damit zu kämpfen, aber keine Möglichkeit gefunden, einen String über Fn :: Join zu berechnen und für einen späteren Zeitpunkt in der Vorlage aufzubewahren.
Kann ich Ihnen ein typisches Beispiel geben?
Zum 18.09.2014 würde die ausgefeilteste Methode zum Speichern eines Zeichenfolgenwerts zur Wiederverwendung im Abschnitt Ressourcen über eine Zuordnung (zweite Ebene) erfolgen. Besser noch, ich kann eine Bedingung vorberechnen und bestimmen, ob die Zeichenfolge verwendet werden soll oder nicht. Aber leider funktioniert das Speichern eines Strings einfach nicht.
Hier ist eine Beispielzeilengruppe für ein solches Mapping…
"LoadBalancerBucketMap": {
"BucketName": {
"string": {
"Fn::Join": [
"-",
[
"mylb",
{
"Ref": "Environment"
},
"logs"
]
]
}
}
},
Und hier ist ein Zugriffsausdruck in einer Ressource
"S3BucketName": {
"Fn::FindInMap": [
"LoadBalancerBucketMap",
"BucketName",
"string"
}
In diesem Beispiel ist Environment ein Literal-String-Parameter mit einem geeigneten Standardwert. Das ist also ein sehr anschauliches Beispiel für das Erstellen und Wiederverwenden einer Zeichenfolge. Aber hier ist, was der CloudFormation-Prozessor sagt ...
Vorlagenüberprüfungsfehler: Vorlagenformatfehler: Jedes Zuordnungsattribut muss eine Zeichenfolge oder eine Liste sein.
Daher teile ich Ihre Frustration darüber, dass es in einer Vorlage keine Möglichkeit zu geben scheint, den Effekt einer temporären Zeichenfolgenvariablen bereitzustellen.
Soweit ich sehen kann. Aber die Antwort, die Sie ursprünglich erhalten haben, sagte das Gegenteil davon (wenn auch ohne Beispiel).
Wenn also jemand ein Beispiel für eine Problemumgehung hat, kann er dies bitte mitteilen?