Ich habe eine Zeichenfolge, die aus einer Reihe von Variablen gebildet wird, die ich für viele verschiedene Dinge wie Tags und Hostnamen verwende.
Gibt es eine Möglichkeit, eine wiederverwendbare Zeichenfolge zu erstellen, die ich nur aus der Vorlage heraus referenzieren kann?
Über Gedanken hierzu würde ich mich sehr freuen. edit: In einem Beispiel würden zwei Parameter übergeben, z. B. ProjectName und Environment
"Fn::Join" : [ "-", [ {"Ref":"ProjectName"}, {"Ref":"Environment"} ] ]
und Verwenden der Ergebnisse an mehreren Stellen
Antworten:
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…
Und hier ist ein Zugriffsausdruck in einer Ressource
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?
quelle
Sie können Parameter oder Zuordnungen verwenden, um Zeichenfolgen zu speichern, die Sie in Ihren Vorlagen verwenden können.
quelle
Leider habe ich festgestellt, dass es nicht möglich ist, das zu tun, was ich erreichen wollte. es hilft nicht, aber da ist es.
quelle
Wir machen unseren CloudFormation-Stack-Namen genau
{ProjectName}-{Environment}
währendaws cloudformation deploy
. Haben Sie diese Namenskonvention für Ihren Stapelnamen berücksichtigt?Danach können Sie es einfach als referenzieren
{ "Fn:Sub": "${AWS::StackName}" }
.quelle