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 AWS le tue risorse e le loro proprietà. Ogni volta che crei uno stack, CloudFormation effettua il provisioning delle risorse descritte nel modello.

Modelli

Un CloudFormation modello è un file di testo in formato JSON o YAML. È possibile salvare questi file con qualsiasi estensione, ad esempio,, o.json. .yaml .template .txt CloudFormation utilizza questi modelli come modelli per creare le tue AWS risorse. Ad esempio, in un modello è possibile descrivere un'istanza Amazon EC2, come il tipo di istanza, l'ID AMI, le mappature dei dispositivi a blocchi e il relativo nome della coppia di chiavi Amazon EC2. 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, effettua il CloudFormation provisioning di un'istanza con un ID ami-0ff8a91507f77f867 AMI, un tipo di t2.micro istanza, un nome di testkey key pair e un volume Amazon EBS.

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'istanza Amazon EC2, come illustrato 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 istanza di Amazon EC2; tuttavia CloudFormation, i 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 Supponi di aver creato un modello che include un gruppo Auto Scaling, un load balancer Elastic Load Balancing e un'istanza database Amazon Relational Database Service (Amazon RDS). Per creare queste risorse, crei uno stack inviando il modello che hai creato ed esegui il CloudFormation provisioning di tutte quelle risorse al posto tuo. Puoi lavorare con gli stack utilizzando la CloudFormation console, l'API o. AWS CLI

Per ulteriori informazioni, consulta Creazione e gestione degli stack con AWS CloudFormation.

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 database Amazon RDS, CloudFormation creerà un nuovo database ed eliminerà quello precedente. 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 Aggiornamento di stack utilizzando i set di modifiche.

Come funziona CloudFormation

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

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

  1. Usa Application Composer il tuo editor di testo per creare o modificare un CloudFormation modello in formato JSON o YAML. È possibile anche scegliere di utilizzare un modello fornito. Il CloudFormation modello descrive le risorse desiderate e le relative impostazioni. Ad esempio, supponi di voler creare un'istanza EC2. Il modello può dichiarare un'istanza Amazon EC2 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 un URL Amazon S3. 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, l'operazione CreateStackAPI o il comando create-stack. AWS CLI

    Nota

    Se specifichi un file modello archiviato localmente, lo CloudFormation carica in un bucket S3 del tuo account. AWS 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 account. AWS 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'URL Amazon S3 di un file del modello.

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

Dopo aver creato tutte le risorse, 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.

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 AWS CloudFormation aggiornamenti 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 per un'istanza EC2, è necessario modificare il valore della proprietà InstanceType nel modello di stack originale.

    Per ulteriori informazioni, consulta Modifica di un modello di stack.

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

  3. Creare un set di modifiche specificando lo stack che si desidera aggiornare e la posizione del modello modificato, ad esempio un percorso sul computer locale o un URL Amazon S3. 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 Aggiornamento di 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 CloudFormation console, l'operazione DeleteStackAPI o il comando delete-stack. AWS CLI

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.