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
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.
python -m pip install aws-cdk-lib npm install -g aws-cdknpm uninstall aws-cdk
cdk init app --language python python -m pip install -r requirements.txt
#!/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()
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,)
- 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
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