I modelli di CloudFormation presentano molti vantaggi:

  • Usi un formato familiare un modello CloudFormation è semplicemente un file di testo in formato JSON (JavaScript Object Notation) o YAML che descrive l'infrastruttura AWS necessaria per eseguire un'applicazione o un servizio insieme a qualunque interconnessione fra di loro.
  • Gestisci le relazioni: i modelli catturano in modo conciso le relazioni delle risorse, ad esempio le istanze EC2 che devono essere associate al bilanciamento del carico Elastic Load Balancing, o il fatto che un volume EBS deve trovarsi nella stessa zona di disponibilità dell’istanza EC2 alla quale è collegato.
  • Puoi riutilizzarli: i parametri di modello permettono di usare un singolo modello per molte distribuzioni d’infrastruttura con diversi valori di configurazione, per esempio quante istanze distribuire per l’applicazione.
  • Ricevi feedback utile: i modelli forniscono anche proprietà di output per comunicare all’utente risultati di distribuzione o informazioni di configurazione. Ad esempio, un modello sul quale viene creata un’istanza può fornire l’URL dell’endpoint Elastic Load Balancing che deve usare il cliente per collegarsi all’applicazione sulla quale è creata un’istanza.
  • Eviti conflitti: tutte le risorse AWS in un modello sono identificate utilizzando nomi logici e questo permette la creazione di più stack da un modello senza timore di conflitti di nome fra le risorse AWS.
  • Scrivi ed esegui: utilizza qualunque metodo per lanciare uno stack senza dover registrare preventivamente il modello con AWS CloudFormation.
  • Visualizzi il tuo stack: CloudFormation Designer permette di visualizzare i modelli in un diagramma. Puoi visualizzare facilmente le tue risorse AWS e le loro relazioni e disporre il layout secondo la tua logica. Puoi modificare i modelli utilizzando l’interfaccia a trascinamento e l’editor di testo JSON integrato. Le modifiche apportate al diagramma modificano automaticamente JSON nel modello.
  • Puoi cercare risorse: AWS CloudFormation conserva una copia del modello di stack per consentirti di utilizzare la Console di gestione AWS, gli strumenti a riga di comando o le API per cercare le configurazioni precise di risorse che sono state applicate durante la creazione dello stack.
  • Automatizzi: hai l’opzione di automatizzare la generazione di modelli utilizzando il linguaggio di programmazione o lo strumento di tua scelta. Esiste anche l’opzione di automatizzare la creazione di stack dai modelli utilizzando le API CloudFormation, gli SDK AWS o le CLI AWS.

Un modello ha la struttura JSON di livello elevato seguente:

Inizia a usare AWS gratis

Crea un account gratuito
Oppure accedi alla Console

Ricevi dodici mesi di accesso al piano gratuito di AWS e sfrutta le caratteristiche di supporto di base di AWS, inclusi l'assistenza clienti 24 ore al giorno, 7 giorni su 7, 365 giorni all'anno, i forum di supporto e molto altro.

{

    “Description" : “Una descrizione testo per l’utilizzo del modello",

    "Parameters" : {

        // Un gruppo di input utilizzati per personalizzare il modello per distribuzione

    },

    "Resources" : {

        // Il gruppo di risorse AWS e le relazioni fra di loro

    },

    "Outputs" : {

        // Un gruppo di valori da rendere visibili al creatore dello stack

    },

    "AWSTemplateFormatVersion" : "2010-09-09"

}

Il modello seguente è un esempio semplice che mostra come creare un’istanza EC2:

{

    "Description" : "Crea un’istanza EC2 eseguita sulle AMI Amazon Linux 32 bit.",

    "Parameters" : {

        "KeyPair" : {

            "Description" : "La coppia di chiavi EC2 per permettere l’accesso SSH all’istanza",

            "Type" : "String"

        }

    },

    "Resources" : {

        "Ec2Instance" : {

            "Type" : "AWS::EC2::Instance",

            "Properties" : {

                "KeyName" : { "Ref" : "KeyPair" },

                "ImageId" : "ami-3b355a52"

            }

        }

    },

    "Outputs" : {

        "InstanceId" : {

            “Description" : "InstanceId dell’istanza EC2 appena creata",

            "Value" : {

                "Ref" : "Ec2Instance"

            }

        }

    },

    "AWSTemplateFormatVersion" : "2010-09-09"

}   

Uno stack è una raccolta di risorse che risultano dalla creazione di istanze su un modello. Per creare uno stack si deve fornire un modello e qualunque altro parametro ad AWS CloudFormation. Sulla base del modello e di altre dipendenze in esso specificate, AWS CloudFormation determina quali risorse AWS devono essere create e in quale ordine.

Per aggiornare uno stack, bisogna fornire un modello con la configurazione desiderata di tutte le risorse nello stack. Puoi modificare le proprietà delle risorse esistenti nello stack per adattarle ai cambiamenti nel tuo ambiente o a nuovi requisiti dell’applicazione. Per esempio, puoi modificare le soglie di allarme nei tuoi allarmi AWS CloudWatch o aggiornare le AMI eseguite su un’istanza nel tuo stack. AWS CloudFormation si incarica di propagare le modifiche a tutte le risorse nel tuo stack. In molti casi le modifiche vengono effettuate senza ripercussioni sull’applicazione in esecuzione. Tuttavia, se una modifica non può essere effettuata dinamicamente (per esempio, aggiornare le AMI su un’istanza EC2), AWS CloudFormation crea una nuova risorsa e l’immette nello stack, eliminando la vecchia risorsa non appena il servizio ha determinato che l’aggiornamento completo è avvenuto con successo.

AWS CloudFormation crea o aggiorna uno stack interamente. Se uno stack non può essere creato o aggiornato interamente, AWS CloudFormation effettua un rollback. Per effettuare un debug, si può disattivare l’operazione di rollback e ritentare manualmente la creazione o l’aggiornamento dello stack più tardi.

Si può anche utilizzare AWS CloudFormation Designer per creare o modificare un modello di stack e poi inviarlo ad AWS CloudFormation per creare o aggiornare lo stack. AWS CloudFormation Designer è disponibile nella Console di gestione AWS.

Accedere ad AWS CloudFormation è facile tramite la Console di gestione AWS, che offre un'interfaccia utente grafica basata sul Web per distribuire e gestire gli stack. Un’applicazione può essere creata, eliminata o aggiornata dalla Console di gestione AWS in pochi passi semplici.

AWS CloudFormation Designer è uno strumento visivo che permette di aggiungere risorse ai modelli utilizzando un’interfaccia a trascinamento. Con CloudFormation Designer potrai concentrarti maggiormente sulla progettazione dell'infrastruttura AWS piuttosto che sulla codifica manuale dei modelli. Ad esempio, quando si aggiungono o eliminano risorse, CloudFormation Designer modifica automaticamente il JSON sottostante. Si può anche utilizzare un editor di testo integrato per specificare dettagli del modello, come i valori di proprietà della risorsa e i parametri di input. Per ulteriori informazioni, consulta la documentazione.

AWS CloudFormation Designer fa parte della console di AWS CloudFormation; devi accedere con le tue credenziali AWS per utilizzarlo. Per utilizzare AWS CloudFormation Designer, vai alla pagina https://console.thinkwithwp.com/cloudformation/designer. Gli scenari seguenti sottolineano alcune delle caratteristiche di AWS CloudFormation Designer.

Visualizzazione delle risorse del modello
Analisi dei file di testo formattati per JSON per capire quali risorse si trovano nel modello e le relazioni fra di esse può essere difficile. Con AWS CloudFormation Designer si può aprire qualunque modello di AWS CloudFormation e lo strumento visualizza tutte le risorse del modello sotto forma di diagramma. Si possono visualizzare facilmente le risorse del modello e come sono collegate senza leggere JSON. AWS CloudFormation Designer include un editor di testo JSON per visualizzare in ogni momento i dettagli del modello, se necessario.

Semplificazione della creazione dei modelli
Quando si lavora con risorse di modelli in un editor di testo, bisogna modificare JSON manualmente, il che può essere fastidioso e introdurre errori. In AWS CloudFormation Designer, si può lavorare con le risorse in modo simile a come si lavora con i diagrammi. Si trascinano e rilasciano nuove risorse per aggiungerle al modello e si trascinano le connessioni fra risorse per stabilire delle relazioni. AWS CloudFormation Designer modifica automaticamente il JSON. Oltre a visualizzare le risorse, l’editor di testo JSON integrato fornisce una caratteristica di caricamento automatico per i nomi di proprietà risorse. Con AWS CloudFormation Designer potrai concentrarti maggiormente sulla progettazione dell'infrastruttura AWS piuttosto che sulla codifica manuale dei modelli.

AWS CloudFormation fornisce anche un semplice gruppo di API facili da utilizzare e altamente flessibili. Per un elenco completo delle API disponibili per AWS CloudFormation, consulta la guida di riferimento delle API di AWS CloudFormation. Di seguito sono elencate alcune delle API più comuni, con la relativa funzionalità:

  • CreateStack: avvia la creazione di un nuovo stack. I parametri di input per la chiamata includono il nome dello stack e un nome di file (oppure un URL Amazon S3) per il modello di origine. Se il processo di creazione dello stack è stato completato con successo, lo stack è in stato CREATE_COMPLETE. Se la creazione dello stack non viene completata, AWS CloudFormation elimina le risorse create precedentemente, a meno che l’utente non abbia specificato un contrassegno per conservare gli elementi per il debug.
  • ListStacks: elenca tutti gli stack in un account. Si può usare per visualizzare il gruppo di stack e il loro stato attuale, per esempio se è in corso una creazione o un aggiornamento.
  • ListStackResources: elenca tutti i nomi e identificatori di risorse AWS che sono stati creati durante la creazione di uno stack. Oltre a fornire informazioni, questa chiamata può essere utilizzata come un’applicazione compatibile con AWS CloudFormation per capirne l’ambiente.
  • DescribeStackEvents: elenca tutte le operazioni ed eventi generati da AWS CloudFormation per uno stack per poter visualizzare il progresso di creazione o eliminazione.
  • UpdateStack: inizia il processo di aggiornamento di uno stack esistente. I parametri di input per la chiamata includono il nome dello stack e un nome di file (oppure un URL Amazon S3) per il modello aggiornato. Se il processo di creazione dello stack è stato completato con successo, lo stack è in stato UPDATE_COMPLETE. Se l’aggiornamento dello stack non viene completato, AWS CloudFormation annulla tutte le modifiche fatte alle risorse in modo che lo stack ritorni allo stato descritto del modello di origine.

AWS CloudFormation può essere utilizzato anche tramite l’SDK AWS e l’interfaccia a riga di comando (CLI) di AWS.

AWS CloudFormation è integrato con Amazon Simple Notification Service (Amazon SNS), e questo consente di ricevere notifiche sul progresso della creazione, dell’aggiornamento e dell’eliminazione dello stack. Oltre a fornire lo stato, questo permette anche ad altri programmi di riconoscere eventi in CloudFormation e di rispondere o addirittura partecipare al processo di configurazione dello stack.

Il modello di AWS CloudFormation è progettato per approfittare della tua esperienza con AWS. Ogni risorsa possiede un gruppo di parametri con nomi identici ai nomi utilizzati per creare le risorse tramite la loro API nativa. I frammenti di modello seguenti mostrano come si definisce un volume Amazon EBS. Il nome logico del volume del modello è “myVolume” e il tipo è "AWS::EC2::Volume". Riconoscerai le proprietà se hai già usato i volumi EBS.

"myVolume" : {

    "Type" : "AWS::EC2::Volume",

    "Properties" : {

        "Size" : "10",

        "SnapshotId" : "snap-7b8fd361",

        "AvailabilityZone" : "us-east-1a"

    }

}

AWS CloudFormation fornisce vari script di assistenza che possono essere distribuiti nelle tue istanze EC2. Questi script permettono di leggere facilmente i metadati delle risorse di uno stack e di utilizzarli per configurare l’applicazione, distribuire all’istanza pacchetti e file elencati nel modello e reagire agli aggiornamenti di stack come le modifiche di configurazione o gli aggiornamenti dell’applicazione.

Sono disponibili gli script seguenti:

  • cfn-get-metadata: recupera i metadati associati alle risorse nel modello.
  • cfn-init:  scarica e installa i pacchetti e i file descritti nel modello.
  • cfn-init:  segnala al flusso di lavoro di creazione dello stack che l’applicazione è in funzione e pronta a gestire il traffico.
  • cfn-hup: un daemon per monitorare direttamente gli aggiornamenti di stack iniziati tramite la console AWS, strumenti a riga di comando o API ed eseguire hook specifici all’applicazione per reagire a queste modifiche.

Gli script CloudFormation possono essere utilizzati da soli o con CloudInit, una caratteristica disponibile nelle AMI Amazon Linux e alcune altre AMI Linux. Per ulteriori dettagli sulle applicazioni di bootstrap e la configurazione degli aggiornamenti, consulta le risorse per gli sviluppatori di AWS CloudFormation. 

L'uso di questo servizio è soggetto al contratto con il cliente Amazon Web Services.