Domande generali

AWS CloudFormation è un servizio che offre ad aziende e sviluppatori strumenti di facile utilizzo per la creazione di una raccolta di risorse AWS e di terze parti correlate e il provisioning e la gestione delle risorse in modo ordinato e prevedibile.

Gli sviluppatori possono distribuire e aggiornare calcolo, database e molte altre risorse in modo semplice e in formato dichiarativo eliminando la complessità legata all'utilizzo delle API specifiche delle risorse. AWS CloudFormation è progettato per consentire la gestione reiterabile, prevedibile e sicura dei cicli di vita delle risorse e permettere allo stesso tempo rollback automatici, gestione automatizzata dello stato e gestione degli account in tutti gli account e le regioni. Miglioramenti e opzioni recenti offrono diversi modi per creare le risorse, tra cui l'utilizzo di CDK AWS per codificare in linguaggi di livello più elevato, importare risorse esistenti e rilevare le deviazioni di configurazione. Inoltre, un nuovo registro rende più facile creare tipi di risorse personalizzate che ereditano molti vantaggi intrinseci di CloudFormation.

Si tratta di servizi creati per completarsi a vicenda. AWS Elastic Beanstalk fornisce un ambiente che permette di distribuire ed eseguire applicazioni nel cloud con la massima semplicità. È una soluzione che si integra con gli strumenti degli sviluppatori e fornisce un'esperienza centralizzata per la gestione del ciclo di vita delle applicazioni. La possibilità di gestire i carichi di lavoro delle applicazioni come se fossero carichi di lavoro di Elastic Beanstalk offre un'esperienza di creazione e aggiornamento delle applicazioni chiavi in mano. Nella pratica, Elastic Beanstalk usa CloudFormation per creare e mantenere le risorse. Se i requisiti delle applicazioni richiedono un controllo più personalizzato, la funzionalità aggiuntiva di CloudFormation offre maggiori opzioni per controllare i carichi di lavoro.

AWS CloudFormation è un meccanismo di provisioning che si applica a un'ampia gamma di risorse AWS e di terze parti. Supporta le necessità infrastrutturali di diversi tipi di applicazioni, tra cui applicazioni aziendali esistenti, applicazioni legacy, applicazioni che impiegano una serie di risorse AWS e soluzioni basate su container (incluse quelle create usando AWS Elastic Beanstalk).

AWS CloudFormation supporta gli ambienti applicativi di Elastic Beanstalk come tipo di risorsa AWS. In questo modo, è possibile ad esempio creare e gestire applicazioni in hosting in AWS Elastic Beanstalk con database RDS per memorizzare i dati dell'applicazione. È possibile aggiungere al gruppo qualsiasi risorsa AWS supportata.

CloudFormation introduce quattro novità. Un modello è un file in formato dichiarativo JSON o YAML che descrive lo stato previsto di tutte le risorse necessarie per distribuire un'applicazione. Uno stack implementa e gestisce il gruppo di risorse definite nel modello, consentendo la gestione contemporanea dello stato e delle dipendenze di tali risorse. Un set di modifiche è un'anteprima delle modifiche che saranno eseguite dalle operazioni dello stack per creare, aggiornare o rimuovere le risorse. Un set di stack è un gruppo di stack gestibili insieme in grado di replicare un gruppo.

È possibile consultare l'elenco completo di risorse AWS supportate e relative funzionalità nella pagina relativa ai servizi AWS supportati nella sezione Cronologia delle versioni della documentazione.

Il registro di AWS CloudFormation e le risorse personalizzate di AWS CloudFormation consentono di gestire anche altre risorse AWS e di terze parti.

R: Sì, è possibile. CloudFormation non pone alcun vincolo, lasciando il pieno controllo di tutti gli elementi dell'infrastruttura e la possibilità di continuare a usare gli strumenti AWS e di terze parti esistenti per gestire le risorse AWS. Tuttavia, dato che CloudFormation può prevedere ulteriori regole, best practice e opzioni di controllo della conformità, è opportuno consentire a CloudFormation di gestire le modifiche delle risorse. Questo approccio controllato e prevedibile consente la gestione di centinaia o migliaia di risorse nel portafoglio delle applicazioni.

I modelli di CloudFormation sono file di testo in formato JSON o YAML che contengono cinque tipi di elementi:

1. Un elenco opzionale dei parametri del modello (valori di input forniti in fase di creazione dello stack)
2. Un elenco opzionale di valori di output (ad es. l'URL completo a un'applicazione Web)
3. Un elenco opzionale di tabelle di dati usate per verificare i valori di configurazione statici (ad es. nomi di AMI)
4. L'elenco di risorse AWS con i relativi valori di configurazione
5. Il numero di versione del formato del file di modello

Per personalizzare determinati aspetti del modello in fase di runtime, è possibile modificarne i parametri durante la creazione dello stack. Nel processo di creazione, è ad esempio possibile inoltrare le dimensioni del database Amazon RDS, i tipi di istanze Amazon EC2, il database e i numeri di porta del server Web ad AWS CloudFormation. Ogni parametro può avere una descrizione e un valore predefiniti e può essere contrassegnato come "NoEcho" per nascondere il valore effettivo inserito sia sullo schermo sia nel log di eventi di AWS CloudFormation. Quando viene creato uno stack di AWS CloudFormation, la Console di gestione AWS farà immediatamente un resoconto presentando un modulo a comparsa che consente di modificare i valori dei parametri.

I valori di output consentono di mostrare all'utente le risorse chiave dello stack (ad esempio l'indirizzo del sistema di bilanciamento del carico di Elastic Load Balancing o il database di Amazon RDS) tramite la Console di gestione AWS o gli strumenti a riga di comando. È possibile usare funzioni semplici per concatenare valori letterali stringa e valori degli attributi associati con le risorse AWS effettive. Con un modello, è possibile utilizzare anche i tipi di risorse del registro, i tipi di risorse privati personalizzati e le macro, nonché recuperare i parametri di configurazione di AWS Secrets Manager e AWS System Manager Parameter Store.

È possibile assegnare nomi logici alle risorse AWS in un modello. Al momento della creazione di uno stack, AWS CloudFormation collega il nome logico al nome della risorsa AWS effettiva corrispondente. I nomi delle risorse effettive sono una combinazione tra il nome dello stack e il nome logico della risorsa. In questo modo è possibile creare diversi stack da un modello senza causare conflitti di nomi tra risorse AWS.

Anche se AWS CloudFormation consente di assegnare i nomi ad alcune risorse, ad esempio ai bucket Amazon S3, questa operazione non è disponibile per tutte le risorse. Assegnare un nome a una risorsa limita la riusabilità di un modello e provoca conflitti di denominazione quando una risorsa viene sostituita a seguito di un aggiornamento. Per ridurre al minimo questi problemi, il supporto all'assegnazione di nomi viene valutato caso per caso.

Sì. AWS CloudFormation offre un set di script di processi di bootstrap applicativi che consentono di installare pacchetti, file e servizi sulle istanze EC2 semplicemente descrivendoli nel modello di CloudFormation. Ulteriori informazioni e istruzioni sono disponibili suBootstrap di applicazioni tramite AWS CloudFormation.

È possibile integrare CloudFormation anche con Systems Manager per eseguire e mantenere le installazioni dei software con i documenti di Systems Manager Automation.

Sì. AWS CloudFormation può essere impiegato per eseguire il bootstrap sia di Chef Server sia del client Chef sulle istanze EC2. Per ulteriori informazioni e istruzioni, consulta Integrazione di AWS CloudFormation con Chef.

Sì. AWS CloudFormation può essere impiegato per eseguire il bootstrap sia di Puppet Master sia del client Puppet sulle istanze EC2. Ulteriori informazioni e istruzioni sono disponibili su Integrating AWS CloudFormation with Puppet.

Sì. CloudFormation può eseguire il bootstrap del motore Terraform sulle istanze EC2. I fornitori di risorse Terraform possono inoltre essere impiegati per creare risorse negli stack, sfruttando le dipendenze, la stabilizzazione, il rollback e la gestione dello stato degli stack.

Sì. Le risorse Amazon EC2 che supportano l'applicazione di tag possono operare anche in un modello di AWS. I valori dei tag possono fare riferimento a parametri del modello, a nomi di altre risorse, a valori degli attributi di risorse (ad es. indirizzi) o a valori calcolati da funzioni semplici (ad es. un elenco di stringhe concatenate). CloudFormation applica automaticamente un tag ai volumi di Amazon EBS e alle istanze Amazon EC2 con il nome dello stack di CloudFormation di cui fanno parte.

Sì. È possibile usare funzioni semplici per concatenare valori letterali stringa e valori degli attributi delle risorse AWS effettive inoltrandoli ai campi dati utente nel modello. Per ulteriori informazioni su queste funzioni fai riferimento ai modelli di prova.

Di default si attiva la funzione "automatic rollback on error", che istruisce CloudFormation a creare o aggiornare tutte le risorse nello stack solo se tutte le operazioni vengono completate correttamente. In caso contrario, CloudFormation ripristina lo stack all'ultima configurazione stabile nota. Questa funzione è utile, ad esempio, quando si supera accidentalmente il limite predefinito di indirizzi IP elastici oppure quando non si dispone dell'accesso all'AMI EC2 da eseguire. L'utilità della funzione si basa sul fatto che gli stack vengono creati interamente o non vengono creati affatto, con la conseguente semplificazione dell'amministrazione di sistema e della creazione di soluzioni a più livelli con CloudFormation.

Sì. Una delle opzioni offerte da CloudFormation è la risorsa WaitCondition che agisce come una barriera, bloccando la creazione di altre risorse finché non riceve un segnale di completamento da un'origine esterna, ad esempio l'applicazione o il sistema di gestione. Altre opzioni includono la creazione di logica personalizzata con le funzioni AWS Lambda.

Sì. CloudFormation consente di definire le policy di eliminazione delle risorse all'interno del modello. È possibile richiedere la creazione di snapshot dei volumi di Amazon EBS o istanze database di Amazon RDS prima della loro eliminazione. Puoi anche specificare che una risorsa venga conservata e non eliminata insieme allo stack. È una funzione utile, ad esempio, per conservare i bucket di Amazon S3 dopo l'eliminazione dello stack.

Sì. CloudFormation supporta la creazione di VPC, sottoreti, gateway, tabelle di instradamento e ACL rete, nonché la creazione di risorse quali indirizzi IP elastici, istanze Amazon EC2, gruppi di sicurezza EC2, gruppi Auto Scaling, sistemi di bilanciamento del carico elastici, istanze database di Amazon RDS e gruppi di sicurezza RDS in un cloud privato virtuale.

Sì. È possibile utilizzare CloudFormation per modificare e aggiornare le risorse degli stack in modo controllato e prevedibile. Impiegando i modelli per gestire le modifiche agli stack, potrai applicare il controllo della versione all'infrastruttura AWS in modo analogo a come si fa con il software eseguito sull'infrastruttura stessa.

Sì. Con la funzione di importazione delle risorse, è possibile trasferire una risorsa esistente nella gestione di AWS CloudFormation.

Nozioni di base

Per registrarsi a CloudFormation, basta fare clic su Crea un account gratuito nella pagina di CloudFormation. Dopo la registrazione, occorre consultare la documentazione di CloudFormation, che comprende la Guida introduttiva.

Per registrarsi a CloudFormation, occorre fornire ad AWS un numero di telefono e un indirizzo e-mail validi per poter essere contattati se necessario. La convalida del numero di telefono richiede soltanto qualche minuto: durante la procedura di registrazione riceverai una telefonata automatica e dovrai inserire un numero PIN mediante la tastiera del telefono.

Il modo migliore per iniziare a usare CloudFormation è leggere la sezione Configurazione della Guida, inclusa nella documentazione tecnica. Bastano pochi minuti per distribuire e usare uno dei nostri modelli di esempio che illustrano come creare l'infrastruttura necessaria per l'esecuzione di applicazioni quali WordPress. Sono disponibili anche altre risorse di formazione su CloudFormation, da fornitori di piani di studio terzi a tutorial e articoli sul Web. Ulteriori informazioni sono disponibili su Risorse di CloudFormation.

Sì. CloudFormation include diversi modelli di esempio utilizzabili per provare l'offerta ed esplorarne le funzionalità. I modelli di esempio illustrano come creare interconnessioni e usare risorse AWS multiple in sinergia, seguendo le best practice per ottenere ridondanza su più zone di disponibilità, scalabilità e generazione di allarmi. Per iniziare, è sufficiente accedere alla Console di gestione AWS, fare clic su Create Stack e seguire la procedura per selezionare e avviare uno degli esempi. Una volta creato, occorre selezionare lo stack nella console ed esaminare le schede Template e Parameter per vedere quali informazioni del file di modello sono state usate per creare lo stack corrispondente. I modelli di esempio sono disponibili anche su GitHub.

Registro di AWS CloudFormation

Il registro di AWS CloudFormation è un servizio gestito che permette di registrare, utilizzare e trovare i tipi di risorse AWS e di terze parti. I tipi di risorse di terze parti devono essere registrati prima di poter essere utilizzati per eseguire il provisioning delle risorse con i modelli di AWS CloudFormation. Ulteriori informazioni sono disponibili nella sezione Utilizzo del registro di AWS CloudFormation della documentazione.

Un fornitore di risorse è un insieme di tipi di risorse con specifiche e gestori che controllano il ciclo di vita delle risorse sottostanti mediante operazioni di creazione, lettura, aggiornamento, eliminazione ed elenchi. È possibile utilizzare i fornitori di risorse per modellare ed eseguire il provisioning delle risorse tramite CloudFormation. Per esempio, AWS::EC2::Instance è un tipo di risorsa proveniente dal fornitore Amazon EC2. È utilizzabile per modellare ed eseguire il provisioning di un'istanza Amazon EC2 tramite CloudFormation. Il registro di AWS CloudFormation permette di creare e utilizzare i fornitori di risorse per modellare ed eseguire il provisioning di risorse di terze parti, come il monitoraggio SaaS, la produttività del team, o di risorse di gestione del codice sorgente.

La differenza tra fornitore di risorsa AWS e di terze parti è la loro origine. I fornitori di risorse AWS vengono progettati e mantenuti da Amazon e AWS per gestire le risorse e i servizi AWS. Per esempio, tre fornitori di risorse AWS ti aiutano a gestire le risorse di Amazon DynamoDB, AWS Lambda e Amazon EC2. Questi fornitori contengono tipi di risorsa come AWS::DynamoDB::Table, AWS::Lambda::Function e AWS::EC2::Instance. Per i riferimenti completi, consulta la nostra documentazione.

I fornitori di risorse di terze parti sono progettati da un'altra azienda, organizzazione o comunità di sviluppatori. Possono aiutarti a gestire le risorse AWS o di terze parti come quelle per applicazioni AWS o i servizi software SaaS non AWS come gli strumenti di monitoraggio, produttività del tea, gestione degli incidenti o gestione del controllo di versione.

Lo schema di una risorsa definisce un tipo di risorsa in un formato strutturato e coerente. Questo schema viene utilizzato anche per convalidare la definizione di un tipo di risorsa. Lo schema include tutti i parametri e gli attributi supportati per un dato tipo di risorsa, nonché le autorizzazioni necessarie per creare la risorsa con i minori privilegi possibili.

La CLI di AWS CloudFormation permette di creare i fornitori di risorse. Innanzitutto, è necessario definire un uno schema dichiarativo semplice per le risorse, che includa le autorizzazioni necessarie e le relazioni alle altre risorse. Con la CLI di CloudFormation, è possibile generare la struttura dei gestori del ciclo di vita della risorsa (Crea, Leggi, Aggiorna, Elimina ed Elenca) parallelamente agli stub di test per il testing dell'unità e dell'integrazione.

È possibile utilizzare la CLI di AWS CloudFormation di AWS o chiamare direttamente le API RegisterType e Registry relative disponibili tramite l'SDK di AWS e la CLI di AWS. Ulteriori informazioni sono disponibili nella sezione Utilizzo del registro di AWS CloudFormation della documentazione. I fornitori di risorse AWS sono già configurati e non richiedono alcun tipo di registrazione aggiuntiva prima dell'uso.

Registro pubblico di AWS CloudFormation

Il registro di CloudFormation lanciato a novembre 2019 consisteva in un elenco privato, che consentiva ai clienti di estendere CloudFormation per il proprio uso privato. Il registro pubblico estende il registro CloudFormation e aggiunge una posizione pubblica, ricercabile e centrale per condividere, trovare, consumare e gestire tipi di risorse e moduli <>, rendendo molto più semplice configurare e gestire l'infrastruttura e le applicazioni in modo coerente sia per AWS e prodotti di terze parti.

Sì. Nel registro pubblico di CloudFormation, hai accesso a contenuti curati da editori verificati. Innanzitutto, verifichiamo l'identità di ciascun editore utilizzando AWS Marketplace o terze parti come GitHub e Bitbucket.

Il registro pubblico di CloudFormation è un nuovo catalogo di estensioni ricercabile e gestito che contiene tipi di risorse (logica di provisioning) e moduli pubblicati dai partner della rete dei partner AWS (APN) e dalla community di sviluppatori. Con il registro pubblico di CloudFormation, chiunque ora può pubblicare tipi di risorse e moduli sul registro. I clienti possono facilmente scoprire e utilizzare questi tipi di risorse e moduli pubblicati, eliminando la necessità di creare e gestire autonomamente.

Un tipo di risorsa è un pacchetto di codice contenente la logica di provisioning, che consente di gestire il ciclo di vita di una risorsa come un'istanza Amazon EC2 o una tabella Amazon DynamoDB dalla creazione all'eliminazione, astraendo interazioni API complesse. I tipi di risorsa contengono uno schema che definisce la forma e le proprietà di una risorsa e la logica necessaria per il provisioning, l'aggiornamento, l'eliminazione e la descrizione di una risorsa. Un esempio di tipo di risorsa di terze parti nel registro pubblico di CloudFormation è un monitor Datadog, un progetto MongoDB Atlas o un utente Atlassian Opsgenie, tra gli altri.

I moduli sono elementi costitutivi che possono essere riutilizzati su più modelli CloudFormation e vengono utilizzati proprio come una risorsa CloudFormation nativa. Questi elementi costitutivi possono riguardare una singola risorsa, come le best practice per la definizione di un'istanza Amazon Elastic Compute Cloud (Amazon EC2), oppure possono riguardare più risorse, per definire pattern comuni di architettura dell'applicazione.

Fai riferimento a questo link per sviluppare e aggiungere la tua risorsa o modulo al registro AWS CloudFormation. Puoi scegliere di pubblicarlo privatamente o nel registro pubblico.

Fatturazione

Non sono previsti costi aggiuntivi per l'utilizzo di AWS CloudFormation con i fornitori di risorse negli spazi dei nomi seguenti: AWS::*, Alexa::* e Custom::*. In questo caso, viene addebitato il costo dell'utilizzo effettivo delle risorse AWS (quali le istanze Amazon EC2, i sistemi di bilanciamento di carico di Elastic Load Balancing, ecc.) create utilizzando AWS CloudFormation come se fossero state create manualmente. I prezzi sono calcolati solo in base all'uso effettivo, senza tariffe minime né impegni anticipati.

Quando utilizzi fornitori di risorse con AWS CloudFormation fuori dagli spazi dei nomi sopraccitati, ti verranno addebitate le operazioni del gestore. Le operazioni del gestore sono crea, aggiorna, elimina, leggi o elenca su una risorsa. Ulteriori informazioni sono disponibili nella pagina dei prezzi.

Sì. I costi delle risorse AWS create durante l'avvio di un'istanza da un modello si applicano indipendentemente dalla corretta creazione dello stack.

Limitazioni e restrizioni

Per maggiori informazioni sul numero massimo di stack di AWS CloudFormation che puoi creare, vedi Stack in Quote di in AWS CloudFormation. Per richiedere di estendere questo limite, è necessario compilare la richiesta qui: risponderemo entro due giorni lavorativi.

Per ulteriori informazioni, vedi Descrizione del modello in Quote di AWS CloudFormation e Parametri, Risorse e Output nella documentazione di AWS.

Per maggiori informazioni sul numero di parametri e output che puoi specificare in un modello, vedi le sezioni Parametri e Output nelle Quote di AWS CloudFormation.

Per ulteriori informazioni sul numero di risorse che puoi dichiarare in un modello, vedi Risorse in Quote di AWS CloudFormation. La creazione di modelli e stack più piccoli e la modularizzazione dell'applicazione in più stack è una best practice per ridurre il raggio d'azione delle modifiche delle risorse e risolvere più velocemente i problemi con le diverse dipendenze delle risorse, poiché i gruppi di risorse più piccoli sono caratterizzati da dipendenze meno complesse rispetto a quelli più grandi.

Regioni ed endpoint

Gli endpoint di ciascuna regione sono consultabili nella sezione Endpoint AWS CloudFormation della documentazione tecnica.

Ulteriori informazioni sulla disponibilità dei servizi di CloudFormation sono reperibili nella sezione relativa ai prodotti e servizi per regione.