CloudFormation Vorlagenformat
Sie können CloudFormation-Vorlagen in den Formaten JSON oder YAML erstellen. Beide Formate dienen dem gleichen Zweck, bieten aber deutliche Vorteile in Bezug auf Lesbarkeit und Komplexität.
-
JSON- JSON ist ein leichtgewichtiges Datenaustauschformat, das von Maschinen leicht geparst und generiert werden kann. Allerdings kann es für Menschen mühsam werden, sie zu lesen und zu schreiben, insbesondere bei komplexen Konfigurationen. In JSON wird die Vorlage durch verschachtelte geschweifte Klammern
{}und Klammern[]strukturiert, um Ressourcen, Parameter und andere Komponenten zu definieren. Ihre Syntax erfordert die explizite Deklaration jedes Elements, was die Vorlage zwar langatmig machen kann, aber die strikte Einhaltung eines strukturierten Formats gewährleistet. -
YAML- YAML ist besser lesbar und weniger ausführlich als JSON. Es verwendet Einrückungen anstelle von geschweiften Klammern und Klammern, um Verschachtelungen zu kennzeichnen, was die Hierarchie der Ressourcen und Parameter leichter sichtbar macht. YAML wird oft wegen seiner Klarheit und Benutzerfreundlichkeit bevorzugt, insbesondere wenn es um komplexere Vorlagen geht. Da sich YAML jedoch auf die Einrückung verlässt, kann es zu Fehlern kommen, wenn die Abstände nicht konsistent sind, was sorgfältige Aufmerksamkeit erfordert, um die Genauigkeit zu wahren.
Struktur der Vorlage
CloudFormation-Vorlagen sind in verschiedene Abschnitte unterteilt, und jeder Abschnitt ist für eine bestimmte Art von Informationen vorgesehen. Einige Abschnitte müssen in einer bestimmten Reihenfolge angegeben werden, bei anderen spielt die Reihenfolge keine Rolle. Bei der Erstellung Ihrer Vorlage kann es jedoch hilfreich sein, die in den folgenden Beispielen gezeigte logische Reihenfolge zu verwenden, da sich die Werte in einem Abschnitt auf Werte aus einem früheren Abschnitt beziehen können.
Verwenden Sie beim Erstellen von Vorlagen keine doppelten Hauptabschnitte, wie beispielsweise den Abschnitt Resources . Auch wenn CloudFormation die Vorlage akzeptiert, verhält es sich bei der Verarbeitung der Vorlage undefiniert, stellt möglicherweise Ressourcen falsch bereit oder gibt unerklärliche Fehler zurück.
JSON
Das folgende Beispiel zeigt die Struktur einer JSON-formatierten Vorlage mit allen verfügbaren Abschnitten.
{ "AWSTemplateFormatVersion" : "version date", "Description" : "JSON string", "Metadata" : {template metadata}, "Parameters" : {set of parameters}, "Rules" : {set of rules}, "Mappings" : {set of mappings}, "Conditions" : {set of conditions}, "Transform" : {set of transforms}, "Resources" : {set of resources}, "Outputs" : {set of outputs} }
YAML
Das folgende Beispiel zeigt die Struktur einer YAML-formatierten Vorlage mit allen verfügbaren Abschnitten.
--- AWSTemplateFormatVersion:version dateDescription:StringMetadata:template metadataParameters:set of parametersRules:set of rulesMappings:set of mappingsConditions:set of conditionsTransform:set of transformsResources:set of resourcesOutputs:set of outputs
Kommentare
In JSON-formatierten Vorlagen werden Kommentare nicht unterstützt. JSON enthält von Haus aus keine Syntax für Kommentare, also Sie können keine Kommentare direkt in die JSON-Struktur einfügen. Wenn Sie jedoch Erklärungen oder Dokumentationen einfügen müssen, können Sie Metadaten hinzufügen. Weitere Informationen finden Sie unter Metadata-Attribut.
In YAML-formatierte Vorlagen können Sie Inline-Kommentare einfügen, indem Sie das Symbol # verwenden.
Das folgende Beispiel zeigt eine YAML-Vorlage mit eingebundenen Kommentaren.
AWSTemplateFormatVersion: 2010-09-09 Description: A sample CloudFormation template with YAML comments. # Resources section Resources: MyEC2Instance: Type: AWS::EC2::Instance Properties: # Linux AMI ImageId: ami-1234567890abcdef0 InstanceType: t2.micro KeyName: MyKey BlockDeviceMappings: - DeviceName: /dev/sdm Ebs: VolumeType: io1 Iops: 200 DeleteOnTermination: false VolumeSize: 20
Technische Daten
CloudFormation unterstützt die folgenden JSON- und YAML-Spezifikationen:
- JSON
-
CloudFormation folgt dem ECMA-404 JSON-Standard. Weitere Informationen zum JSON-Format finden Sie unter http://www.json.org
. - YAML
-
CloudFormation unterstützt die YAML Version 1.1 Spezifikation mit einigen Ausnahmen. CloudFormation unterstützt die folgenden Features nicht:
-
Die Tags
binaryomap,pairs,setundtimestamp -
Aliasnamen
-
Hash-Zusammenführungen
Weitere Informationen zu YAML finden Sie unter https://yaml.org/
. -
Weitere Informationen
Für jede Ressource, die Sie in Ihrer Vorlage angeben, definieren Sie deren Eigenschaften und Werte anhand der spezifischen Syntaxregeln von JSON oder YAML. Weitere Informationen zur Vorlagensyntax der einzelnen Formate finden Sie unter Abschnitte der CloudFormation-Vorlage.