Last chance! 50% off DataCamp Premium
Sale ends in
Gestire l'infrastruttura cloud con template JSON o YAML grezzi può essere noioso e soggetto a errori. L'AWS Cloud Development Kit (CDK) cambia le carte in tavola permettendoti di definire le risorse cloud usando linguaggi di programmazione moderni come Python, TypeScript, Java e C#.
Con CDK, l'infrastruttura diventa codice riutilizzabile, testabile e sotto controllo di versione. Ti consente di ragionare come uno sviluppatore anche quando esegui il provisioning di sistemi cloud complessi.
In questo tutorial imparerai a configurare un progetto AWS CDK usando Python. Ti guideremo nella scrittura del tuo primo stack, nell'aggiunta di una risorsa AWS essenziale e nella distribuzione sul tuo account AWS. Alla fine avrai una chiara comprensione di come funziona CDK e di come usarlo per gestire l'infrastruttura in modo developer-friendly, con il codice.
Per comprendere meglio le pratiche alla base di strumenti come AWS CDK, esplora i principi fondamentali nel nostro corso DevOps Concepts.
Prima di metterci a scrivere codice con AWS CDK, assicurati che il tuo ambiente sia configurato correttamente. Ecco cosa ti serve:
Ti serve l'accesso a un account AWS per distribuire l'applicazione che costruiremo. Se il tuo sistema è già configurato con le credenziali di un utente con privilegi di amministratore, puoi passare oltre.
Se non hai ancora un account AWS, creane uno qui.
Per un percorso di apprendimento strutturato sui fondamenti di AWS, l'AWS Cloud Practitioner track è un ottimo punto di partenza.
Ti servirà un utente con accesso programmatico e permessi completi per seguire la guida.
Nella schermata finale, annota il tuo Access key ID e la Secret access key. Ti serviranno nel prossimo passaggio.
Apri un terminale ed esegui:
aws configure
Ti verrà chiesto di inserire le credenziali dalla console IAM:
AWS Access Key ID [None]: <your access key ID>
AWS Secret Access Key [None]: <your secret access key>
Default region name [None]: us-east-1
Default output format [None]:
AWS CDK permette agli sviluppatori di lavorare in un ambiente di programmazione completo invece che su template YAML o JSON. Questo ambiente ricco di funzionalità ti consente di usare il tuo IDE preferito beneficiando di completamento del codice, linting in tempo reale e strumenti di refactoring per una gestione efficiente dell'infrastructure as code.
Per la migliore esperienza di sviluppo con il CDK in Python, ti suggerisco un IDE che supporti:
Per usare AWS CDK con Python, devi avere Python versione 3.8 o superiore installato sul tuo sistema. Se non ce l'hai ancora, puoi scaricare l'ultima versione dal sito ufficiale di Python.
Se usi Windows, assicurati che Python sia aggiunto alla variabile d'ambiente PATH del sistema. Per verificare, apri un terminale o prompt dei comandi ed esegui:
python --version
Se vedi un errore tipo "command not found" o simile, probabilmente Python non è nel tuo PATH. La soluzione più semplice è spuntare la casella "Add Python 3.x to PATH" durante l'installazione.
Ti servirà anche pip, il gestore pacchetti di Python, per installare in seguito le dipendenze di AWS CDK. La maggior parte delle distribuzioni moderne di Python include già pip preinstallato.
pip --version
Se non è installato, segui la guida ufficiale di installazione di pip.
Prima di scrivere codice, è essenziale capire cos'è AWS CDK, perché esiste e come si inserisce nel mondo più ampio dell'infrastructure as code (IaC). Questa sezione introduce i concetti chiave alla base di CDK e mostra come si confronta con altri popolari strumenti IaC.
AWS Cloud Development Kit (CDK) è un framework open-source che consente di creare infrastruttura cloud tramite linguaggi di programmazione familiari, tra cui Python, TypeScript, Java e C#.
CDK permette di generare template CloudFormation in modo programmatico tramite vero codice, invece di richiedere la scrittura manuale di template JSON o YAML.
Questo significa che puoi:
Alla base, CDK ruota attorno a tre concetti principali:

Gerarchia visiva di un'app AWS CDK
La tabella seguente descrive le differenze tra gli strumenti disponibili in AWS per gestire l'infrastruttura.
|
Caratteristica |
AWS CDK |
Terraform |
AWS CloudFormation |
|
Supporto linguaggi |
Python, TypeScript, Java, C# |
HCL (dichiarativo) |
YAML / JSON |
|
Livello di astrazione |
Alto (OOP + librerie) |
Medio |
Basso |
|
Modularità |
Forte (construct, classi) |
Forte (moduli) |
Debole (stack annidati) |
|
Gestione dello stato |
Gestito da CloudFormation |
Gestito da Terraform (tfstate) |
Gestito da CloudFormation |
|
Multi-cloud |
Solo AWS |
Sì |
Solo AWS |
AWS CDK supporta più linguaggi di programmazione, permettendo agli sviluppatori di scegliere quello con cui si sentono più a loro agio:
In questo tutorial ci concentreremo su Python, ma i concetti di base valgono per tutti i linguaggi supportati.
Ora che il tuo ambiente è pronto, è il momento di usare Python per creare l'impalcatura della tua prima app AWS CDK. Il comando init di CDK imposta l'intera struttura del progetto, inclusi file, directory e un ambiente virtuale, per aiutarti a iniziare velocemente.
Apri il terminale ed esegui il seguente comando per creare una nuova directory e spostarti al suo interno:
mkdir cdk_datacamp && cd cdk_datacamp
cdk init sample-app --language python
Questo crea un progetto iniziale preconfigurato con un esempio di base che include:
cdk_datacamp_stack)cdk.json che configura come viene eseguita la tua app CDK.venv) per le dipendenze PythonAl termine del comando, vedrai un output simile a questo:

Impalcatura del progetto CDK in Python
Configurazione dell'ambiente virtuale
Se il processo cdk init non crea automaticamente un ambiente virtuale, puoi farlo manualmente:
python3 -m venv .venv
source .venv/bin/activate
Una volta attivato, installa le dipendenze richieste:
pip install -r requirements.txt
Prima di approfondire il codice, vediamo come i componenti principali di AWS CDK — app, stack e construct — lavorano insieme nella pratica. Ora che sai cosa rappresenta ciascuno, è essenziale vedere come interagiscono per formare un'infrastruttura scalabile e modulare.
Analizzeremo anche i diversi livelli di construct (L1, L2, L3) ed esamineremo le librerie CDK che lo rendono possibile.
Ora che conosci App, Stack e Construct dalle sezioni precedenti, capiamo come lavorano insieme in un'applicazione CDK.
Pensala come costruire una casa:
In codice, la relazione appare così:
# app.py
from aws_cdk import App
from my_project.my_stack import MyStack
# Initialize the CDK application
app = App()
# Instantiate the stack and add it to the app
MyStack(app, "MyFirstStack")
# Synthesize the CloudFormation template
app.synth()
# my_stack.py
from aws_cdk import Stack
from aws_cdk import aws_s3 as s3
from constructs import Construct
class MyStack(Stack):
def __init__(self, scope: Construct, id: str, **kwargs) -> None:
super().__init__(scope, id, **kwargs)
# Define an Amazon S3 bucket with default settings
s3.Bucket(self, "MyBucket")
Qui, l'App istanzia uno Stack, che include Construct come un bucket S3.
In AWS CDK, i construct sono disponibili in tre livelli di astrazione, dandoti flessibilità in base al livello di controllo o semplicità di cui hai bisogno.
Livello 1 (L1) – Construct CloudFormation
Sono i mattoni grezzi generati direttamente dalla specifica AWS CloudFormation. Ogni risorsa AWS in CloudFormation ha un equivalente construct L1 in CDK; i loro nomi iniziano sempre con "Cfn".
I construct L1 espongono ogni possibile opzione di configurazione ma non offrono astrazioni o default. Sono ideali quando ti serve controllo totale o quando usi funzionalità AWS più nuove non ancora incapsulate dai construct di livello superiore.
s3.CfnBucketLivello 2 (L2) – Construct nativi di AWS CDK
I construct L2 forniscono un'astrazione più elevata e developer-friendly rispetto ai L1. Sono componenti con opinioni e default sensati, con metodi integrati che semplificano i compiti quotidiani. Sono pensati per l'uso di tutti i giorni e riducono il boilerplate pur offrendo un buon livello di personalizzazione.
s3.Bucket – Puoi creare un bucket con versioning con una sola riga di codice.Livello 3 (L3) – Pattern di construct
I construct L3 sono astrazioni che raggruppano più risorse AWS in pattern architetturali comuni. Possono essere forniti da AWS o creati come componenti riutilizzabili dalla community o da te. Usa i construct L3 per incapsulare la complessità e riutilizzare pattern di infrastruttura tra progetti o team.
aws_s3_deployment.BucketDeployment – Combina un bucket S3 e una strategia di deployment per automatizzare il caricamento degli asset.La maggior parte degli sviluppatori parte dai construct L2 e introduce i L1 solo quando necessario. I L3 diventano utili quando il tuo progetto cresce e vuoi astrarre pattern ripetuti in componenti riutilizzabili.
Quando costruisci con AWS CDK non interagisci direttamente con CloudFormation grezzo. Usi invece le librerie modulari di CDK, che forniscono construct per servizi AWS come S3, Lambda, IAM e altri. Tutti i moduli dei servizi AWS sono inclusi nel pacchetto principale chiamato aws-cdk-lib e sono ulteriormente organizzati per servizio.
Di seguito alcune delle librerie (o moduli) più usate di aws-cdk-lib nei progetti Python:
aws_cdk.aws_s3 – Per creare bucket S3aws_cdk.aws_lambda – Per definire funzioni Lambdaaws_cdk.aws_iam – Per gestire ruoli e permessiaws_cdk.aws_dynamodb – Per lavorare con tabelle DynamoDBaws_cdk.aws_ec2 – Per componenti di rete come VPC e security groupaws_cdk.aws_sns / aws_cdk.aws_sns_subscriptions – Per topic SNS e i loro sottoscrittoriQuesti moduli vengono importati solo quando servono, mantenendo il progetto leggero e modulare.
Per usare un servizio AWS specifico, importi il relativo modulo e richiami le sue classi construct. Ad esempio, per creare un bucket S3:
from aws_cdk import aws_s3 as s3
# Inside your stack
bucket = s3.Bucket(self, "MyBucket")
Questo esempio usa il construct L2 s3.Bucket, che include default integrati come opzioni di cifratura e versioning.
Se ti serve un altro servizio, importa il suo modulo allo stesso modo:
from aws_cdk import aws_lambda as lambda_
from aws_cdk import aws_iam as iam
Nota: Nel tuo requirements.txt, in genere ti servono solo:
aws-cdk-lib==2.179.0
constructs>=10.0.0,<11.0.0
Questi due pacchetti ti danno accesso a tutti i construct di AWS CDK e alle funzionalità del framework core.
Dopo aver appreso il funzionamento interno di AWS CDK, puoi mettere in pratica queste conoscenze. La sezione seguente ti guida nella creazione di uno stack CDK operativo usando Python. Prima di distribuirli sul tuo account AWS, creerai una struttura di progetto tramite codice e implementerai risorse AWS reali, come bucket S3 e funzioni Lambda.
Quando esegui il comando cdk init con il flag --language python, viene configurata una struttura di progetto completa che appare più o meno così:

Struttura delle cartelle di un progetto AWS CDK in Python
Il file app.py è dove è definita l'App, e il file cdk_datacamp_stack.py è dove scrivi il codice per il tuo Stack e i Construct.
Suggerimento: Puoi rinominare il file o la classe dello stack in base allo scopo della tua app, ad esempio storage_stack.py o monitoring_stack.py.
Ora aggiungiamo alcune risorse AWS al tuo stack CDK. Scriverai questo codice all'interno del metodo __init__() della tua classe Stack nel file cdk_datacamp_stack.py.
Bucket S3
from aws_cdk import aws_s3 as s3
# Create an S3 bucket with versioning and managed encryption
bucket = s3.Bucket(
self,
"MyBucket",
versioned=True,
encryption=s3.BucketEncryption.S3_MANAGED
)
Funzione Lambda
from aws_cdk import aws_lambda as lambda_
# Define a Lambda function using Python 3.9 runtime
lambda_function = lambda_.Function(
self,
"MyFunction",
runtime=lambda_.Runtime.PYTHON_3_9,
handler="index.handler",
code=lambda_.Code.from_asset("lambda") # Load code from local folder named 'lambda'
)
Dopo aver aggiunto le risorse, è ora di distribuirle su AWS.
Nel terminale, attiva il tuo ambiente virtuale ed esegui:
cdk deploy
Questo:
Se è la prima volta che distribuisci lo stack, ti verrà chiesto di approvare le modifiche.
Dopo la distribuzione, puoi:
Le app AWS CDK si basano sui construct come elementi strutturali essenziali. Quando padroneggi i construct, che tu usi quelli integrati dei servizi o crei pattern riutilizzabili, il tuo codice di infrastruttura diventa più modulare, manutenibile e leggibile.
Questa sezione ti insegna a usare i construct L2 (alto livello) e a sviluppare construct personalizzati che riducono i pattern ripetitivi.
I construct L2 sono astrazioni native di CDK più semplici da usare rispetto a CloudFormation grezzo (L1). Hanno default sensati e type safety, spesso richiedono meno righe di codice per configurare una risorsa AWS.
Perché usare i construct L2?
.add_to_role_policy() o .add_event_notification()Esempio: Creare un bucket S3 usando L2
from aws_cdk import aws_s3 as s3
# Create a versioned and encrypted S3 bucket
bucket = s3.Bucket(
self,
"MyBucket",
versioned=True,
encryption=s3.BucketEncryption.S3_MANAGED
)
L'equivalente construct L1, s3.CfnBucket, richiederebbe di impostare manualmente tutte le proprietà e definire la configurazione come dict grezzi — molto meno intuitivo.
Altri comuni construct L2 includono:
lambda_.Function() per AWS Lambdadynamodb.Table() per DynamoDBsqs.Queue() per SQSsns.Topic() per SNSLa tua infrastruttura crescerà con pattern ricorrenti, come la creazione di funzioni Lambda con permessi specifici e bucket S3. I construct personalizzati sono la soluzione ideale in questo scenario.
I construct personalizzati ti permettono di combinare risorse correlate in un'unica unità logica, riutilizzabile tra stack o progetti.
Quando creare un construct personalizzato:
Esempio: un pattern riutilizzabile S3 + Lambda
from constructs import Construct
from aws_cdk import aws_s3 as s3, aws_lambda as lambda_
class StorageWithLambda(Construct):
def __init__(self, scope: Construct, id: str) -> None:
super().__init__(scope, id)
# S3 bucket
self.bucket = s3.Bucket(self, "MyBucket")
# Lambda function
self.function = lambda_.Function(
self,
"MyFunction",
runtime=lambda_.Runtime.PYTHON_3_9,
handler="index.handler",
code=lambda_.Code.from_asset("lambda")
)
# Grant Lambda access to the S3 bucket
self.bucket.grant_read_write(self.function)
Ora puoi usare questo construct in qualsiasi stack così:
from my_project.storage_with_lambda import StorageWithLambda
storage = StorageWithLambda(self, "ReusableComponent")
Prima di eseguire quanto sopra, crea una cartella chiamata lambda nella root del progetto e crea un file index.py con il seguente contenuto:
def handler(event, context):
return {
"statusCode": 200,
"body": "Hello from Lambda!"
}
Suggerimenti per la riutilizzabilità
construct_ o inseriscili in una cartella constructs/self.bucket o self.function per flessibilitàDopo aver scritto il codice della tua infrastruttura, è essenziale verificare cosa distribuirà CDK e, idealmente, testare che i tuoi stack si comportino come previsto. AWS CDK fornisce strumenti per sintetizzare template CloudFormation e scrivere test automatizzati per intercettare misconfigurazioni prima del deployment.
Il comando cdk synth genera il template CloudFormation dal tuo codice CDK.
cdk synth
Quando esegui questo comando, CDK:
app.py)
Template CloudFormation sintetizzato
Per impostazione predefinita, l'output va al terminale, ma puoi anche reindirizzarlo a un file se necessario:
cdk synth > template.yaml
Questo è utile quando:
Anche se testare l'infrastructure as code può sembrare insolito, è molto utile, soprattutto quando i tuoi stack diventano grandi o includono logica condizionale, cicli o construct riutilizzabili.
AWS CDK offre il modulo assertions per testare gli stack sintetizzati.
Scrivere un test semplice con pytest
Ecco un test di esempio che verifica se uno specifico componente (come un bucket S3) è incluso nello stack:
# test/test_cdk_datacamp_stack.py
import aws_cdk as cdk
from aws_cdk.assertions import Template
from cdk_datacamp.cdk_datacamp_stack import CdkDatacampStack
def test_s3_bucket_created():
app = cdk.App()
stack = CdkDatacampStack(app, "TestStack")
template = Template.from_stack(stack)
# Assert that an S3 bucket exists
template.resource_count_is("AWS::S3::Bucket", 1)
Per eseguire i test, assicurati che pytest sia installato:
pip install -U pytest
Poi esegui:
pytest
Se tutto passa, vedrai un segno di spunta verde. In caso contrario, l'output del test ti dirà cosa manca.
Output di Pytest che mostra l'esecuzione riuscita di tutti i casi di test per lo stack AWS CDK
Puoi anche includere validazioni nel tuo stack CDK. I test di validazione sono controlli a runtime all'interno del tuo codice di construct o stack che convalidano gli input prima del deployment. Aiutano a intercettare misconfigurazioni o a imporre vincoli nelle prime fasi del ciclo di sviluppo.
Poniamo di voler passare il bucket_name come variabile di contesto, ma vogliamo validare che:
Crea un file chiamato test/test_storage_with_lambda.py e aggiungi quanto segue:
import pytest
from aws_cdk import App, Stack
from cdk_datacamp.storage_with_lambda import StorageWithLambda
def test_missing_bucket_name():
app = App()
stack = Stack(app, "TestStack")
with pytest.raises(ValueError, match="bucket_name is required"):
StorageWithLambda(stack, "FailingConstruct", bucket_name=None)
def test_bucket_name_uppercase():
app = App()
stack = Stack(app, "TestStack")
with pytest.raises(ValueError, match="must be lowercase"):
StorageWithLambda(stack, "FailingConstruct", bucket_name="InvalidName")
Per testare la validazione, esegui il comando seguente:
test/test_storage_with_lambda.py
Output di Pytest che mostra l'esecuzione riuscita di tutti i casi di test per lo stack AWS CDK
Quando usare i test:
Vuoi consolidare le tue conoscenze CDK in vista di un colloquio? Queste domande da colloquio su AWS DevOps possono aiutarti a prepararti.
Dopo aver imparato a creare e distribuire stack CDK, dovresti seguire le best practice per mantenere il tuo codice di infrastruttura pulito, sicuro e scalabile. In questa sezione parleremo di come strutturare progetti grandi, gestire correttamente la sicurezza e integrare CDK nelle pipeline CI/CD.
Man mano che la tua app CDK cresce, diventa essenziale organizzare il codice in unità gestibili.
Suddividi l'infrastruttura per ambito. Ad esempio:
Questo ti permette di distribuire, testare o eliminare parti della tua infrastruttura in modo indipendente. Ecco come può essere incluso in app.py:
network_stack = NetworkingStack(app, "NetworkingStack")
compute_stack = ComputeStack(app, "ComputeStack")
Puoi anche passare risorse tra stack usando output o riferimenti.
Incapsula risorse correlate (come una Lambda e i suoi permessi) in un construct personalizzato, come hai fatto con StorageWithLambda. Questo migliora la leggibilità e la riutilizzabilità tra stack o app.
Supporta più ambienti (dev, staging, prod) usando:
cdk.json con valori di contestocdk deploy -c env=prodenv = app.node.try_get_context("env")
if env == "prod":
bucket_name = "mycompany-prod-logs"
Qualsiasi progetto di infrastruttura deve dare priorità alla sicurezza durante i processi di distribuzione automatizzata con AWS CDK. La sezione seguente dimostra una gestione sicura delle risorse IAM attraverso i principi del privilegio minimo.
I construct CDK, tra cui Lambda o i task ECS, creano automaticamente ruoli IAM. Anche se comodo, può limitare il controllo su permessi e naming.
Meglio definire i ruoli esplicitamente:
from aws_cdk import aws_iam as iam
execution_role = iam.Role(
self,
"LambdaExecutionRole",
assumed_by=iam.ServicePrincipal("lambda.amazonaws.com"),
description="Custom role for Lambda with least privilege",
managed_policies=[
iam.ManagedPolicy.from_aws_managed_policy_name("service-role/AWSLambdaBasicExecutionRole")
]
)
Questo ruolo consente solo il logging e nient'altro di default.
Evita di usare "*" in actions o resources a meno che non sia strettamente necessario.
Esempio:
lambda_fn.add_to_role_policy(
iam.PolicyStatement(
actions=["*"],
resources=["*"]
)
)
Puoi anche usare grant specifici per risorsa quando disponibili:
bucket.grant_read(lambda_fn)
Questo genera automaticamente la policy necessaria con accesso limitato al bucket S3.
Le policy gestite da AWS semplificano la manutenzione e riducono la probabilità di errori.
iam.ManagedPolicy.from_aws_managed_policy_name("AmazonSQSReadOnlyAccess")
Puoi allegarle a ruoli personalizzati per servizi come ECS, Batch o Step Functions.
AWS CDK offre una potenza notevole grazie alla sua capacità di integrarsi con pipeline CI/CD moderne. CDK supporta la consegna automatizzata dell'infrastruttura tramite distribuzione di codice sotto controllo versione, funzionando con GitHub, GitLab e servizi nativi AWS, tra cui CodePipeline. Il sistema riduce gli errori umani, accorcia i cicli di feedback e abilita il deployment su più ambienti.
Puoi usare GitHub Actions per sintetizzare, confrontare, testare e distribuire gli stack CDK a ogni push o pull request.
Guarda questo .github/workflows/deploy.yml:
name: Deploy CDK App
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: 3.11
- name: Install dependencies
run: |
pip install -r requirements.txt
npm install -g aws-cdk
- name: Run unit tests
run: pytest
- name: CDK Synth
run: cdk synth -c environment=prod
- name: Deploy to AWS
run: cdk deploy --require-approval never
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
Usa cdk diff nelle PR per visualizzare in anteprima le modifiche all'infrastruttura prima del merge.
Per deployment completamente gestiti all'interno di AWS, CDK fornisce un modulo chiamato aws_cdk.pipelines, che ti consente di definire l'intera pipeline CI/CD come codice, proprio come l'infrastruttura.
Ecco un esempio semplificato:
from aws_cdk import pipelines, SecretValue, Stack
from constructs import Construct
from my_app_stage import MyAppStage # replace with your actual stage import
class PipelineStack(Stack):
def __init__(
self,
scope: Construct,
construct_id: str,
**kwargs
) -> None:
super().__init__(scope, construct_id, **kwargs)
# Define the source of the pipeline from a GitHub repository
source = pipelines.CodePipelineSource.git_hub(
repo_string="your-org/your-repo", # GitHub org/repo
branch="main",
authentication=SecretValue.secrets_manager("GITHUB_TOKEN")
)
# Define the CodePipeline and its synthesis step
pipeline = pipelines.CodePipeline(
self,
"MyAppPipeline",
synth=pipelines.ShellStep(
"Synth",
input=source,
commands=[
"pip install -r requirements.txt",
"npm install -g aws-cdk",
"cdk synth"
]
)
)
# Add an application stage (e.g., production deployment)
pipeline.add_stage(
MyAppStage(self, "ProdStage")
)
Nel codice sopra:
SecretValue.secrets_manager("GITHUB_TOKEN") recupera in modo sicuro il tuo token GitHub da Secrets Manager.MyAppStage dovrebbe essere una classe che estende Stage e incapsula i tuoi stack CDK reali.Se stai distribuendo sistemi di machine learning, l'integrazione di CDK con pratiche di continuous deployment è trattata nel nostro corso CI/CD for Machine Learning.
Questo tutorial ti ha mostrato come costruire e distribuire infrastruttura cloud in Python tramite le operazioni di AWS Cloud Development Kit (CDK). Hai imparato a:
Ora che hai distribuito la tua prima app CDK, ecco alcuni modi per fare un salto di qualità:
aws_s3_deployment, aws_ecs_patterns e cdk.pipelinesPer continuare a imparare e costruire, da' un'occhiata al corso Introduction to AWS Boto in Python!
AWS CDK ti permette di definire l'infrastruttura cloud usando linguaggi di programmazione come Python, mentre CloudFormation e Terraform si basano su JSON/YAML o HCL. CDK offre un livello di astrazione superiore e riusabilità tramite i construct.
No, CDK astrae gran parte della complessità di CloudFormation. Tuttavia, conoscere CloudFormation aiuta quando usi construct di livello inferiore o durante il troubleshooting dei deployment.
Sì! CDK supporta configurazioni specifiche per ambiente usando valori di contesto e flag da CLI come cdk deploy -c env=prod.
Puoi usare pytest insieme alle assertions di CDK e al modulo template per scrivere unit test che verificano le risorse e le configurazioni del tuo stack prima del deployment.
cdk deploy sintetizza il tuo codice Python in un template CloudFormation, lo carica su AWS e effettua il provisioning delle risorse definite nel tuo account.
Rahul Sharma è un AWS Ambassador, DevOps Architect e blogger tecnico specializzato in cloud computing, pratiche DevOps e tecnologie open source. Con esperienza in AWS, Kubernetes e Terraform, semplifica concetti complessi per chi studia e per i professionisti attraverso articoli e tutorial coinvolgenti. Rahul è appassionato di risolvere le sfide DevOps e di condividere idee per dare forza alla community tech.
Scopri di più su AWS con questi corsi!
{count, plural, one {Corso} other {Corsi}}
{count, plural, one {Corso} other {Corsi}}
{count, plural, one {Corso} other {Corsi}}
{count, plural, one {blog} other {blogs}}
Tim Lu
12 min

{count, plural, one {blog} other {blogs}}
Abid Ali Awan
15 min

{count, plural, one {blog} other {blogs}}
Abid Ali Awan
10 min