Una guida per automatizzare il rilascio dell’infrastruttura AWS

Quando si tratta di gestire l’infrastruttura nel cloud, AWS fornisce diversi strumenti potenti che aiutano ad automatizzare la creazione e la gestione delle risorse.

Uno dei modi più efficaci per gestire i deployment è tramite AWS CloudFormation. Consente di definire la propria infrastruttura in modo dichiarativo, semplificando l’automazione della fornitura dei servizi AWS, inclusi Elastic Beanstalk, applicazioni serverless, istanze EC2, gruppi di sicurezza, bilanciatori di carico e altro ancora.

In questa guida, esploreremo come utilizzare AWS CloudFormation per distribuire l’infrastruttura in modo programmabile. Copriremo anche come distribuire manualmente le risorse tramite la Console di Gestione AWS e come integrare servizi come Elastic Beanstalk, funzioni serverless, EC2, IAM e altre risorse AWS nel flusso di lavoro automatizzato.

Utilizzo di AWS CloudFormation per l’infrastruttura come codice

AWS CloudFormation consente di definire l’infrastruttura utilizzando il codice. CloudFormation fornisce un framework unificato per automatizzare e versionare l’infrastruttura impostando Elastic Beanstalk, istanze EC2, VPC, ruoli IAM, funzioni Lambda o applicazioni serverless.

I template di CloudFormation sono scritti in formato YAML o JSON e definiscono le risorse da fornire. Con CloudFormation, è possibile automatizzare tutto, dalle applicazioni semplici a ambienti complessi multi-servizio.

Principali caratteristiche di CloudFormation

  • Configurazione dichiarativa. Descrivi lo stato desiderato della tua infrastruttura e CloudFormation si assicura che lo stato corrente corrisponda ad esso.
  • Gestione delle risorse. Provisiona e gestisce automaticamente le risorse AWS come istanze EC2, database RDS, VPC, funzioni Lambda, ruoli IAM e altro ancora.
  • Aggiornamenti dichiarativi dello stack. Se hai bisogno di modificare la tua infrastruttura, aggiorna semplicemente il template di CloudFormation e adatterà le tue risorse al nuovo stato desiderato.

Passaggi per l’utilizzo di CloudFormation per diverse distribuzioni AWS

Distribuzione di Elastic Beanstalk con CloudFormation

1. Scrivi un template di CloudFormation

Crea un template di CloudFormation in formato YAML o JSON per definire la tua applicazione e ambiente Elastic Beanstalk. Questo template può includere risorse come istanze EC2, gruppi di sicurezza, politiche di scalabilità e persino l’applicazione Elastic Beanstalk stessa.

Esempio di template di CloudFormation (Elastic Beanstalk):

YAML

 

2. Distribuisci lo stack di CloudFormation

Utilizza l’AWS CLI o la Console di gestione AWS per distribuire lo stack di CloudFormation. Una volta distribuito, CloudFormation creerà automaticamente tutte le risorse definite nel template.

Distribuzione tramite AWS CLI:

YAML

 

Distribuzione senza server con AWS Lambda, API Gateway e DynamoDB

CloudFormation è ottimo anche per distribuire applicazioni serverless. Con servizi come AWS Lambda, API Gateway, DynamoDB e S3, è possibile gestire facilmente carichi di lavoro serverless.

1. Creare un Modello CloudFormation Serverless

Questo modello includerà una funzione Lambda, un API Gateway per accedere alla funzione e una tabella DynamoDB.

Esempio di Modello CloudFormation (Serverless):

YAML

 

2. Distribuire lo Stack Serverless

Distribuisci la tua applicazione serverless utilizzando AWS CLI o AWS Management Console.

YAML

 

Implementazione VPC e EC2

CloudFormation può automatizzare la creazione di una Virtual Private Cloud (VPC), subnet, gruppi di sicurezza e istanze EC2 per carichi di lavoro più tradizionali.

1. Modello CloudFormation per VPC ed EC2

Questo modello definisce una semplice istanza EC2 all’interno di una VPC, con un gruppo di sicurezza che consente il traffico HTTP.

Esempio di Modello CloudFormation (VPC ed EC2):

YAML

 

2. Distribuire lo Stack

YAML

 

Funzionalità Avanzate di CloudFormation

AWS CloudFormation offre più di una semplice fornitura di risorse. Ecco alcune delle funzionalità avanzate che rendono CloudFormation uno strumento potente per l’automazione dell’infrastruttura:

  • Stack Sets. Creare e gestire stack su più account AWS e regioni, consentendo una distribuzione coerente dell’infrastruttura in tutta l’organizzazione.
  • Set di modifica. Prima di applicare le modifiche al tuo stack CloudFormation, visualizza un set di modifica per assicurarti l’esito desiderato.
  • Ouput. Valori di output da CloudFormation che puoi utilizzare per altri stack o applicazioni. Ad esempio, puoi ottenere l’URL di un API Gateway o l’indirizzo IP di un’istanza EC2.
  • Parametri. Passa dei parametri per personalizzare il tuo stack senza modificare il template stesso, rendendolo riutilizzabile in diversi ambienti.
  • Mappature. Crea coppie chiave-valore per configurare valori specifici di una regione AWS, tipi di istanze o altri parametri specifici dell’ambiente.

Utilizzo di CloudFormation con servizi AWS oltre Elastic Beanstalk

CloudFormation non è limitato solo agli sviluppi di Elastic Beanstalk – è uno strumento flessibile che può essere utilizzato con una varietà di servizi AWS, tra cui:

  • AWS Lambda. Automatizza il rilascio di funzioni serverless insieme a trigger come API Gateway, S3 o eventi DynamoDB.
  • Amazon S3. Utilizza CloudFormation per creare bucket S3 e gestirne la configurazione.
  • AWS IAM. Automatizza la creazione di ruoli IAM e delle relative policy per controllare l’accesso alle risorse.
  • Amazon RDS. Definisci database RDS (MySQL, PostgreSQL, ecc.) con tutte le relative configurazioni come impostazioni VPC, subnet e gruppi di sicurezza.
  • Amazon SQS, SNS. Gestisci code e argomenti per l’architettura delle tue applicazioni utilizzando CloudFormation.
  • Amazon ECS ed EKS. Automatizza la creazione e il deployment delle applicazioni containerizzate con servizi come ECS ed EKS.

Deployment manuale dell’infrastruttura dalla Console di gestione di AWS

Sebbene CloudFormation automatizzi il processo, a volte è necessario un intervento manuale. La Console di gestione di AWS ti consente di distribuire risorse manualmente.

1. Applicazione Elastic Beanstalk

  • Vai alla Console di Elastic Beanstalk.
  • Fai clic su “Crea applicazione”, segui i passaggi per definire il nome dell’applicazione e la piattaforma (ad esempio, Docker, Node.js), quindi configura manualmente l’ambiente, le opzioni di scalabilità e sicurezza.

2. Applicazioni serverless (Lambda + API Gateway)

  • Vai alla Console di Lambda per creare e distribuire le funzioni.
  • Utilizza la Console di API Gateway per creare API per le tue funzioni Lambda.

3. Istanze EC2

  • Lancia manualmente le istanze EC2 dalla Console di EC2 e configuralle con il tipo di istanza scelto, i gruppi di sicurezza e le coppie di chiavi.

Conclusioni

AWS CloudFormation offre un modo coerente e ripetibile per gestire l’infrastruttura per le applicazioni Elastic Beanstalk, le architetture serverless e le applicazioni basate su EC2. Con le sue funzionalità avanzate come Stack Sets, Change Sets e Parametri, CloudFormation può adattarsi alle esigenze di ambienti complessi.

Per chiunque gestisca ambienti AWS di grandi dimensioni o dinamici, CloudFormation è uno strumento essenziale per garantire coerenza, sicurezza e automazione in tutte le tue distribuzioni AWS.

Source:
https://dzone.com/articles/automate-aws-infrastructure-deployment