Pubblicato il 10/08/2023 da alnao nella categoria AWS

AWS ha realizzato due specifiche librerie per la gestione delle risorse in Cloud usando linguaggi di programmazione: Cloud Development Kit, spesso abbreviato con la sigla CDK, e SDK, la prima mette a disposizione librerie per creare e gestire risorse mentre la seconda mette a disposizione librerie per usare/interagire le risorse nel Cloud. Comprenderne la differenza è fondamentale: in parole semplici la libreria CDK gestisce risorse del Cloud mentre la libreria SDK gestisce risorse nel Cloud, sottile differenza ma fondamentale.

Quando si usa la CDK bisogna sempre tenere presente che si tratta di un servizio di tipo “infrastructure as code”, concetto già presentato con il servizio di CloudFormation, secondo la documentazione ufficiale:

the output of an AWS CDK program is an AWS CloudFormation template

cioè tutti i programmi, spesso chiamati “App”, creati con la libreria CDK corrispondono al concetto di stack di CloudFormation, con la differenza che non c’è un template YAML/Json ma c’è il codice sorgente del programma per la definizione delle risorse.

Per entrambe le librerie AWS mette a disposizione librerie per i maggiori linguaggi di programmazione: Python, Java, .Net, JavaScript e altri, disponibili nlelle documentazioni ufficiali di CDK e SDK. Purtroppo è facile confondere i nomi delle due librerie vista l’assonanza, spesso si fa riferimento solo al SDK anche per componenti comprese nella CDK. In questo sito si presterà sempre attenzione e verrà indicato sempre quale delle due librerie è usata negli esempi. Sono messe a disposizione anche Toolkit specifici per i principali ambienti di sviluppo come Eclipse e Visual Studio Code, per maggior informazioni si può consultare la documentazione ufficiale.


Per l’installazione della CDK di Python bisogna avere a disposizione il compilatore python e il programma npm installati, poi si deve lanciare i comandi di installazione:
python -m pip install aws-cdk-lib
npm install -g aws-cdknpm uninstall aws-cdk
Un nuovo progetto può essere creato con i comandi:
cdk init app --language python
python -m pip install -r requirements.txt
e si può consultare la documentazione ufficiale per maggiori dettagli. La libreria può essere importata come previsto dallo standard python e usata per definire una “app” che crea un oggetto di una classe:
#!/usr/bin/env python3
import os
import aws_cdk as cdk
from prova1.prova1_stack import Prova1Stack
app = cdk.App()
Prova1Stack(app, "Prova1CDKStack",    )
app.synth()
all’interno della definizione della classe si definiscono le risorse da creare nello stack:
from aws_cdk import (    Stack,)
from constructs import Construct
import aws_cdk.aws_s3 as s3
class Prova1Stack(Stack):
    def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
        super().__init__(scope, construct_id, **kwargs)
        # definizione di un bucket
        bucket = s3.Bucket("MyBucket", bucket_name="my-bucket", versioned=True,)

I principali comandi per gestire le applicazioni con la libreria CDK:
  • cdk deploy: esegue il deploy dell’applicazione
  • cdk synth: crea un template CloudFormation per la app
  • cdk diff: confronta il codice sorgnete con l’eventuale stack già presente nel cloud
  • cdk list: visualizza la lista di tutti gli stack rilasciati
  • cdk destroy <nome>: distrugge uno stack nel cloud
Tutti i comandi e i parametri messi a disposizione dalla libreria Cdk sono disponibili alla pagina della documentazione ufficiale dove è possibile trovare la descrizione del file cdk.json, file di configurazione di tutti i progetti costruiti con le librerie CDK di AWS.  Quando si usano le librerie di AWS (CDK e SDK) bisogna sempre ricordare che queste usano i profili configurati con la AWS-CLI: esattamente come per il comando CLI-SAM anche per la CDK, se non specificato come parametro, viene usato il parametro di default, se non c’è nessun profilo configurato queste librerie non sono utilizzabili a meno che non vengano indicate specificatamente come parametro in creazione dell’oggetto App nel codice.

Il pacchetto standard npm è ben documentato nella pagina ufficiale, la libreria è gratuita ed open-source, il repository pubblico del progetto è disponibile su GitHub:

https://github.com/aws/aws-cdk
Esattamente come per il servizio CloudFormation, bisogna ricordare che la CDK è gratuita ma tutte le risorse create e gestite possono essere a pagamento e bisogna sempre prestare attenzione a quello che viene creato nel Cloud per evitare addebiti indesiderati.
MENU