Formato del modello CloudFormation
Puoi creare modelli CloudFormation in formato JSON o YAML. Entrambi i formati hanno lo stesso scopo ma offrono vantaggi distinti in termini di leggibilità e complessità.
-
JSON: JSON è un formato di interscambio di dati leggero che le macchine riescono ad analizzare e generare facilmente. Tuttavia, può diventare complicato per gli esseri umani da leggere e scrivere, specialmente per configurazioni complesse. In JSON, il modello è strutturato utilizzando parentesi graffe
{}e parentesi quadre[]annidate per definire risorse, parametri e altri componenti. La sua sintassi richiede una dichiarazione esplicita di ogni elemento, il che può rendere il modello prolisso ma garantisce la stretta aderenza a un formato strutturato. -
YAML: YAML è progettato per essere più leggibile dall’uomo e meno prolisso rispetto a JSON. Utilizza l’indentazione anziché parentesi quadre e graffe per indicare l’annidamento, il che può semplificare la visualizzazione della gerarchia di risorse e parametri. YAML è spesso preferito per la sua chiarezza e la sua facilità d’uso, specialmente quando si tratta di modelli più complessi. Tuttavia, la dipendenza di YAML dall’indentazione può portare a errori se la spaziatura non è coerente, il che richiede molta attenzione per mantenere la precisione.
Struttura del modello
I modelli CloudFormation sono suddivisi in diverse sezioni e ogni sezione è progettata per contenere un tipo specifico di informazioni. Alcune sezioni devono essere dichiarate in un ordine specifico, mentre per altre l’ordine non ha importanza. Tuttavia, durante la creazione di un modello, può risultare utile adottare l’ordine logico dei seguenti esempi, in quanto i valori di una sezione potrebbero fare riferimento ai valori di una sezione precedente.
Durante la creazione di modelli, non utilizzare sezioni principali duplicate, come la sezione Resources. Sebbene CloudFormation possa accettare il modello, avrà un comportamento indefinito durante la sua elaborazione e potrebbe effettuare erroneamente il provisioning delle risorse o restituire errori inspiegabili.
JSON
Il seguente esempio illustra la struttura di un modello in formato JSON con tutte le sezioni disponibili.
{ "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
Il seguente esempio illustra la struttura di un modello in formato YAML con tutte le sezioni disponibili.
--- 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
Commenti
Nei modelli in formato JSON, i commenti non sono supportati. JSON, per impostazione predefinita, non include una sintassi per i commenti, il che significa che non è possibile aggiungere commenti direttamente all’interno della sua struttura. Tuttavia, se devi includere note esplicative o documentazione, puoi prendere in considerazione l’aggiunta di metadati. Per ulteriori informazioni, consulta Attributo Metadata.
Nei modelli in formato YAML, puoi includere commenti in linea utilizzando il simbolo #.
L'esempio seguente mostra un modello YAML con i commenti inline.
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
Specifiche
CloudFormation supporta le seguenti specifiche JSON e YAML:
- JSON
-
CloudFormation segue lo standard ECMA-404 JSON. Per ulteriori informazioni sul formato JSON, consulta http://www.json.org
. - YAML
-
CloudFormation supporta le specifiche di YAML Versione 1.1 con poche eccezioni. CloudFormation non supporta le seguenti funzionalità:
-
I tag
binary,omap,pairs,setetimestamp -
Alias
-
Unioni di hash
Per ulteriori informazioni su YAML, visita il sito https://www.yaml.org/
. -
Ulteriori informazioni
Per ogni risorsa specificata nel modello, definiscine le proprietà e i valori utilizzando le regole di sintassi specifiche di JSON o YAML. Per ulteriori informazioni sulla sintassi del modello per ogni formato, consulta Sezioni del modello CloudFormation.