Come CloudFormation funziona - AWS CloudFormation

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Come CloudFormation funziona

Questo argomento descrive come CloudFormation funziona e presenta i concetti chiave che è necessario conoscere durante l'utilizzo.

Concetti chiave

Quando lo usi CloudFormation, lavori con modelli e pile. Crei modelli per descrivere i tuoi AWS risorse e relative proprietà. Ogni volta che crei uno stack, CloudFormation effettua il provisioning delle risorse descritte nel modello.

Modelli

Un CloudFormation modello è un file di testo YAML in formato JSON or. È possibile salvare questi file con qualsiasi estensione, ad esempio.json, .yaml.template, o.txt. CloudFormation utilizza questi modelli come progetti per creare il tuo AWS risorse. Ad esempio, in un modello, puoi descrivere un'EC2istanza Amazon, ad esempio il tipo di istanza, l'AMIID, le mappature dei dispositivi a blocchi e il nome della coppia di EC2 chiavi Amazon. Ogni volta che crei uno stack, specifichi anche un modello da CloudFormation utilizzare per creare tutto ciò che hai descritto nel modello.

Ad esempio, se hai creato uno stack con il seguente modello, esegui il CloudFormation provisioning di un'istanza con un ami-0ff8a91507f77f867 AMI ID, un tipo di t2.micro istanza, un nome di testkey key pair e un EBS volume Amazon.

JSON

{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "A sample template", "Resources": { "MyEC2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": "ami-0ff8a91507f77f867", "InstanceType": "t2.micro", "KeyName": "testkey", "BlockDeviceMappings": [ { "DeviceName": "/dev/sdm", "Ebs": { "VolumeType": "io1", "Iops": 200, "DeleteOnTermination": false, "VolumeSize": 20 } } ] } } } }

YAML

AWSTemplateFormatVersion: 2010-09-09 Description: A sample template Resources: MyEC2Instance: Type: 'AWS::EC2::Instance' Properties: ImageId: ami-0ff8a91507f77f867 InstanceType: t2.micro KeyName: testkey BlockDeviceMappings: - DeviceName: /dev/sdm Ebs: VolumeType: io1 Iops: 200 DeleteOnTermination: false VolumeSize: 20

È anche possibile specificare più risorse in un singolo modello e configurare tali risorse in modo che funzionino insieme. Ad esempio, puoi modificare il modello precedente per includere un indirizzo IP elastico (EIP) e associarlo all'EC2istanza Amazon, come mostrato nell'esempio seguente:

JSON

{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "A sample template", "Resources": { "MyEC2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": "ami-0ff8a91507f77f867", "InstanceType": "t2.micro", "KeyName": "testkey", "BlockDeviceMappings": [ { "DeviceName": "/dev/sdm", "Ebs": { "VolumeType": "io1", "Iops": 200, "DeleteOnTermination": false, "VolumeSize": 20 } } ] } }, "MyEIP": { "Type": "AWS::EC2::EIP", "Properties": { "InstanceId": { "Ref": "MyEC2Instance" } } } } }

YAML

AWSTemplateFormatVersion: 2010-09-09 Description: A sample template Resources: MyEC2Instance: Type: 'AWS::EC2::Instance' Properties: ImageId: ami-0ff8a91507f77f867 InstanceType: t2.micro KeyName: testkey BlockDeviceMappings: - DeviceName: /dev/sdm Ebs: VolumeType: io1 Iops: 200 DeleteOnTermination: false VolumeSize: 20 MyEIP: Type: 'AWS::EC2::EIP' Properties: InstanceId: !Ref MyEC2Instance

I modelli precedenti sono incentrati su una singola EC2 istanza Amazon; tuttavia, i CloudFormation modelli dispongono di funzionalità aggiuntive che puoi utilizzare per creare set complessi di risorse e riutilizzare tali modelli in più contesti. Ad esempio, puoi aggiungere parametri di input i cui valori vengono specificati quando crei uno stack. CloudFormation In altre parole, è possibile specificare un valore, ad esempio il tipo di istanza, al momento della creazione di uno stack anziché quando si crea il modello, rendendo il modello più semplice da riutilizzare in situazioni diverse.

Per ulteriori informazioni, consulta Lavorare con i CloudFormation modelli.

Stack

Quando si utilizza CloudFormation, si gestiscono le risorse correlate come una singola unità denominata pila. Puoi creare, aggiornare ed eliminare una raccolta di risorse mediante la creazione, l'aggiornamento e l'eliminazione di stack. Tutte le risorse di uno stack sono definite dal modello dello stack. CloudFormation Supponiamo di aver creato un modello che include un gruppo Auto Scaling, un sistema di bilanciamento del carico Elastic Load Balancing e un'istanza di database Amazon Relational Database Service (Amazon). RDS Per creare queste risorse, crei uno stack inviando il modello che hai creato ed CloudFormation esegui il provisioning di tutte quelle risorse per te. Puoi lavorare con gli stack utilizzando la CloudFormation console, oppure APIAWS CLI.

Per ulteriori informazioni, consulta Gestione di AWS risorse come singola unità con AWS CloudFormation stack.

Set di modifiche

Per apportare modifiche alle risorse in esecuzione in uno stack, puoi aggiornare lo stack. Prima di apportare modifiche alle risorse, è possibile generare un set di modifiche, che è un riepilogo delle modifiche proposte. I set di modifiche consentono di vedere in che modo le modifiche possono influire sulle risorse in esecuzione, soprattutto nel caso di risorse critiche, prima di applicarle.

Ad esempio, se cambi il nome di un'istanza di RDS database Amazon, CloudFormation creerà un nuovo database ed eliminerà quello vecchio. Perderai i dati nel vecchio database, a meno che non abbia già eseguito il backup. Se generi un set di modifiche, vedrai che la modifica causerà la sostituzione del database e sarai in grado di pianificare le attività di conseguenza prima di aggiornare lo stack.

Per ulteriori informazioni, consulta Aggiorna CloudFormation gli stack utilizzando i set di modifiche.

Come CloudFormation funziona

Durante la creazione di uno stack, CloudFormation effettua chiamate di servizio sottostanti a AWS per fornire e configurare le risorse. CloudFormation può eseguire solo azioni per le quali l'utente è autorizzato a eseguire. Ad esempio, per creare EC2 istanze utilizzando CloudFormation, sono necessarie le autorizzazioni per creare istanze. Avrai bisogno di autorizzazioni analoghe per terminare le istanze quando elimini gli stack con istanze. Tu usi AWS Identity and Access Management(IAM) per gestire le autorizzazioni.

Le chiamate effettuate CloudFormation sono tutte dichiarate dal modello. Ad esempio, supponiamo di avere un modello che descrive un'EC2istanza con un tipo di t2.micro istanza. Quando usi quel modello per creare uno stack, CloudFormation chiama l'istanza Amazon EC2 create API e specifica il tipo di istanza come. t2.micro Il diagramma seguente riassume il CloudFormation flusso di lavoro per la creazione di stack.

Un modello creato o esistente che viene salvato localmente o in un bucket, utilizzato per creare uno stack.
  1. Usa Application Composer il tuo editor di testo per creare o modificare un CloudFormation modello nel JSON nostro formato. YAML È possibile anche scegliere di utilizzare un modello fornito. Il CloudFormation modello descrive le risorse desiderate e le relative impostazioni. Ad esempio, supponiamo di voler creare un'EC2istanza. Il tuo modello può dichiarare un'EC2istanza Amazon e descriverne le proprietà, come mostrato nell'esempio seguente:

    Esempio JSON
    { "AWSTemplateFormatVersion": "2010-09-09", "Description": "A simple EC2 instance", "Resources": { "MyEC2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": "ami-0ff8a91507f77f867", "InstanceType": "t2.micro" } } } }
    Esempio YAML
    AWSTemplateFormatVersion: 2010-09-09 Description: A simple EC2 instance Resources: MyEC2Instance: Type: 'AWS::EC2::Instance' Properties: ImageId: ami-0ff8a91507f77f867 InstanceType: t2.micro
  2. Salva il modello localmente o in un bucket Amazon S3. Se hai creato un modello, dovrai salvarlo con un'estensione file di tipo .json, .yaml o .txt.

  3. Crea uno CloudFormation stack specificando la posizione del file modello, ad esempio un percorso sul tuo computer locale o su Amazon S3. URL Se il modello contiene parametri, è possibile specificare i valori di input quando si crea lo stack. I parametri ti consentono di trasferire valori al modello per personalizzare le risorse ogni volta che si crea uno stack.

    Puoi creare stack utilizzando la CloudFormation console, CreateStackAPIoperation o create-stack AWS CLI comando.

    Nota

    Se specifichi un file modello archiviato localmente, lo CloudFormation carica in un bucket S3 nel AWS conto. CloudFormation crea un bucket per ogni regione in cui carichi un file modello. I bucket sono accessibili a chiunque disponga delle autorizzazioni Amazon Simple Storage Service (Amazon S3) nel tuo AWS conto. Se CloudFormation è già presente un bucket creato da, il modello viene aggiunto a quel bucket.

    Puoi utilizzare il tuo bucket e gestirne le autorizzazioni caricando manualmente i modelli su Amazon S3. Quindi, ogni volta che crei o aggiorni uno stack, specifica l'Amazon URL S3 di un file modello.

CloudFormation fornisce e configura le risorse effettuando chiamate a AWS servizi descritti nel modello.

Dopo che tutte le risorse sono state create, CloudFormation segnala che lo stack è stato creato. È quindi possibile iniziare a utilizzare le risorse nello stack. Se la creazione dello stack fallisce CloudFormation , ripristina le modifiche eliminando le risorse che ha creato.

Aggiornamento di uno stack con i set di modifiche

Quando è necessario aggiornare le risorse del proprio stack, è possibile modificare il modello dello stack. Non è necessario creare un nuovo stack ed eliminare quello precedente. Per aggiornare uno stack, create un set di modifiche inviando una versione modificata del modello di stack originale, diversi valori dei parametri di input o entrambi. CloudFormation confronta il modello modificato con il modello originale e genera un set di modifiche. Il set di modifiche elenca le modifiche proposte. Dopo avere esaminato le modifiche, puoi avviare il set di modifiche per aggiornare lo stack oppure puoi creare un nuovo set di modifiche. Il seguente diagramma riepiloga il flusso di elaborazione per l'aggiornamento di stack.

Un modello che utilizza un set di modifiche per visualizzare il valore modificato prima di eseguire il set di modifiche per aggiornare lo stack.
Importante

Gli aggiornamenti possono provocare interruzioni. A seconda della risorsa e delle proprietà che si intende aggiornare, un aggiornamento potrebbe interrompere o anche sostituire una risorsa esistente. Per ulteriori informazioni, consulta Comprendi i comportamenti di aggiornamento delle risorse dello stack.

  1. È possibile modificare un modello di CloudFormation pila utilizzando Application Composer o un editor di testo. Ad esempio, se si desidera modificare il tipo di istanza di un'EC2istanza, è necessario modificare il valore della InstanceType proprietà nel modello dello stack originale. Per ulteriori informazioni, consulta Aggiorna il modello dello stack.

  2. Salva il CloudFormation modello localmente o in un bucket S3.

  3. Crea un set di modifiche specificando lo stack che desideri aggiornare e la posizione del modello modificato, ad esempio un percorso sul tuo computer locale o su Amazon S3. URL Se il modello contiene parametri, è possibile specificare i valori quando si crea il set di modifiche.

    Per ulteriori informazioni sulla creazione di set di modifiche, vedi Aggiorna CloudFormation gli stack utilizzando i set di modifiche.

    Nota

    Se specifichi un modello archiviato sul tuo computer locale, carica CloudFormation automaticamente il modello in un bucket S3 del tuo Account AWS.

  4. Visualizza il set di modifiche per verificare che esegua le modifiche che CloudFormation ti aspetti. Ad esempio, controlla se CloudFormation sostituirà eventuali risorse critiche dello stack. È possibile creare il numero di set di modifiche necessario per includere le modifiche desiderate.

    Importante

    I set di modifiche non indicano se l'aggiornamento dello stack è riuscito. Ad esempio, un set di modifiche non verifica se supererai la quota di un account, se stai aggiornando una risorsa che non supporta gli aggiornamenti o se non disponi di autorizzazioni sufficienti per modificare una risorsa, il che può causare il fallimento di un aggiornamento dello stack.

  5. Avvia il set di modifiche che desideri applicare al tuo stack. CloudFormation aggiorna lo stack aggiornando solo le risorse che hai modificato e segnala che lo stack è stato aggiornato con successo. Se l'aggiornamento dello stack fallisce, CloudFormation ripristina le modifiche per ripristinare lo stack all'ultimo stato di funzionamento noto.

Eliminazione di uno stack

Quando eliminate uno stack, specificate lo stack da eliminare ed CloudFormation eliminate lo stack e tutte le risorse in esso contenute. È possibile eliminare gli stack utilizzando la console, l'operazione o lo stack di CloudFormation eliminazione DeleteStackAPI AWS CLI comando.

Se si desidera eliminare uno stack mantenendo però alcune risorse in esso contenute, è possibile utilizzare una policy di eliminazione per conservare tali risorse.

Dopo che tutte le risorse sono state eliminate, CloudFormation segnala che lo stack è stato eliminato con successo. Se non è CloudFormation possibile eliminare una risorsa, lo stack non verrà eliminato. Tutte le risorse che non sono state eliminate rimarranno finché non sarà possibile eliminare lo stack.