Questa è la guida per sviluppatori AWS CDK v2. Il vecchio CDK v1 è entrato in manutenzione il 1° giugno 2022 e ha terminato il supporto il 1° giugno 2023.
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à.
L' AWS Cloud Development Kit (AWS CDK) implementazione è il processo di provisioning dell'infrastruttura. AWS
Come funzionano le AWS CDK implementazioni
AWS CDK Utilizza il AWS CloudFormation servizio per eseguire le distribuzioni. Prima della distribuzione, sintetizzi gli stack CDK. Questo crea un CloudFormation modello e implementa gli artefatti per ogni stack CDK nell'app. Le implementazioni vengono avviate da una macchina di sviluppo locale o da un ambiente di integrazione e distribuzione continue (CI/CD). Durante la distribuzione, le risorse vengono caricate sulle risorse avviate e il CloudFormation modello viene inviato per il provisioning delle risorse. CloudFormation AWS
Affinché una distribuzione abbia successo, è necessario quanto segue:
-
L'interfaccia AWS CDK a riga di comando (AWS CDK CLI) devono essere dotate di autorizzazioni valide.
-
L' AWS ambiente deve essere avviato.
-
È AWS CDK necessario conoscere le risorse avviate in cui caricare le risorse.
Prerequisiti per le implementazioni CDK
Prima di poter distribuire un' AWS CDK applicazione, è necessario completare quanto segue:
-
Configurare le credenziali di sicurezza per il CDK CLI.
-
Avvia il tuo ambiente. AWS
-
Configura un AWS ambiente per ciascuno dei tuoi stack CDK.
-
Sviluppa la tua app CDK.
Configura le credenziali di sicurezza
Per utilizzare il CDK CLI con cui interagire AWS, è necessario configurare le credenziali di sicurezza sul computer locale. Per istruzioni, consulta Configurare le credenziali di sicurezza per AWS CDK CLI.
Avvia il tuo ambiente AWS
Una distribuzione è sempre associata a uno o più AWS ambienti. Prima di poter eseguire la distribuzione, è necessario avviare l'ambiente. Il bootstrap fornisce le risorse dell'ambiente utilizzate dal CDK per eseguire e gestire le distribuzioni. Queste risorse includono un bucket Amazon Simple Storage Service (Amazon S3) e un repository Amazon Elastic Container Registry (Amazon ECR) Elastic Container ECR) per archiviare e gestire gli asset. Queste risorse includono anche ruoli AWS Identity and Access Management (IAM) utilizzati per fornire autorizzazioni durante lo sviluppo e la distribuzione.
Si consiglia di utilizzare l'interfaccia a riga di AWS CDK comando (AWS CDK CLI) cdk bootstrap
comando per avviare il proprio ambiente. È possibile personalizzare il bootstrap o creare manualmente queste risorse nel proprio ambiente, se necessario. Per istruzioni, consulta Avvia il tuo ambiente per utilizzarlo con AWS CDK.
Configura gli ambienti AWS
Ogni stack CDK deve essere associato a un ambiente per determinare dove viene distribuito lo stack. Per istruzioni, consulta Configurare gli ambienti da utilizzare con AWS CDK.
Sviluppa la tua app CDK
All'interno di un progetto CDK, crei e sviluppi la tua app CDK. All'interno della tua app, crei uno o più stack CDK. All'interno degli stack, è possibile importare e utilizzare costrutti dalla AWS Construct Library per definire l'infrastruttura. Prima di poter eseguire la distribuzione, l'app CDK deve contenere almeno uno stack.
Sintesi dell'app CDK
Per eseguire la sintesi, si consiglia di utilizzare il CDK CLI cdk synth
comando. Il cdk
deploy
comando eseguirà anche la sintesi prima di iniziare la distribuzione. Tuttavia, utilizzandocdk
synth
, è possibile convalidare l'app CDK e catturare gli errori prima di iniziare la distribuzione.
Il comportamento di sintesi è determinato dal sintetizzatore di stack configurato per lo stack CDK. Se non configuri un sintetizzatore, verrà utilizzato. DefaultStackSynthesizer
Puoi anche configurare e personalizzare la sintesi per soddisfare le tue esigenze. Per istruzioni, consulta Configurazione ed esecuzione della sintesi dello stack CDK.
Affinché il CloudFormation modello sintetizzato possa essere distribuito correttamente nell'ambiente, deve essere compatibile con il modo in cui è stato avviato l'ambiente. Ad esempio, il CloudFormation modello deve specificare il bucket Amazon S3 corretto in cui distribuire gli asset. Se utilizzi il metodo predefinito di bootstrap del tuo ambiente, il sintetizzatore di stack predefinito funzionerà. Se personalizzi il comportamento CDK, ad esempio personalizzando il bootstrap o la sintesi, il comportamento di implementazione di CDK può variare.
Il ciclo di vita dell'app
Quando si esegue la sintesi, l'app CDK attraversa le seguenti fasi, note come ciclo di vita dell'app:
- Costruzione (o inizializzazione)
-
Il codice crea un'istanza di tutti i costrutti definiti e poi li collega tra loro. In questa fase, tutti i costrutti (app, stacks e i relativi costrutti secondari) vengono istanziati e viene eseguita la catena di costruttori. La maggior parte del codice dell'app viene eseguita in questa fase.
- Preparazione
-
Tutti i costrutti che hanno implementato il
prepare
metodo partecipano a un ciclo finale di modifiche, per impostare il loro stato finale. La fase di preparazione avviene automaticamente. Come utente, non ricevi alcun feedback da questa fase. È raro che sia necessario utilizzare il gancio «prepare» e generalmente non è consigliato. Fate molta attenzione quando modificate l'albero di costruzione durante questa fase, perché l'ordine delle operazioni potrebbe influire sul comportamento.Durante questa fase, una volta creato l'albero di costruzione, vengono applicati anche tutti gli aspetti configurati.
- Validation
-
Tutti i costrutti che hanno implementato il
validate
metodo possono convalidarsi per garantire che si trovino in uno stato che venga distribuito correttamente. Riceverai una notifica di eventuali errori di convalida che si verificano durante questa fase. In genere, consigliamo di eseguire la convalida il prima possibile (di solito non appena si riceve un input) e di generare le eccezioni il prima possibile. L'esecuzione precoce della convalida migliora l'affidabilità poiché le tracce dello stack saranno più accurate e garantisce che il codice possa continuare a essere eseguito in modo sicuro. - Sintesi
-
Questa è la fase finale dell'esecuzione dell'app CDK. Viene attivato da una chiamata a
app.synth()
, attraversa l'albero dei costrutti e richiama il metodo su tutti i costrutti.synthesize
I costrutti che implementanosynthesize
possono partecipare alla sintesi e produrre artefatti di implementazione nell'assemblaggio cloud risultante. Questi artefatti includono CloudFormation modelli, pacchetti di applicazioni, AWS Lambda file e Docker risorse di immagini e altri elementi di distribuzione. Nella maggior parte dei casi, non è necessario implementare ilsynthesize
metodo.
Esecuzione dell'app
Il CDK CLI deve sapere come eseguire la tua app CDK. Se hai creato il progetto da un modello utilizzando il cdk init
comando, il cdk.json
file dell'app include una app
chiave. Questa chiave specifica il comando necessario per la lingua in cui è scritta l'app. Se la lingua richiede la compilazione, la riga di comando esegue questo passaggio prima di eseguire automaticamente l'app.
{
"app": "npx ts-node --prefer-ts-exts bin/my-app.ts"
}
Se non hai creato il progetto utilizzando il CDK CLI, o se vuoi sovrascrivere la riga di comando fornita incdk.json
, puoi fornire l'--app
opzione quando esegui il cdk
comando.
$
cdk --app 'executable
'cdk-command
...
La executable
parte del comando indica il comando da eseguire per eseguire l'applicazione CDK. Utilizzate le virgolette come illustrato, poiché tali comandi contengono spazi. cdk-command
è un sottocomando simile a synth
o deploy
che indica il CDK CLI cosa vuoi fare con la tua app. Segui questa procedura con tutte le opzioni aggiuntive necessarie per quel sottocomando.
Il CDK CLI può anche interagire direttamente con un assemblaggio cloud già sintetizzato. Per farlo, passa la directory in cui è archiviato l'assembly cloud. --app
L'esempio seguente elenca gli stack definiti nell'assembly cloud archiviato in./my-cloud-assembly
.
$
cdk --app./my-cloud-assembly
ls
Assemblaggi cloud
La chiamata a app.synth()
è ciò che dice loro di AWS CDK sintetizzare un assemblaggio cloud da un'app. In genere non si interagisce direttamente con gli assembly cloud. Sono file che includono tutto il necessario per distribuire l'app in un ambiente cloud. Ad esempio, include un AWS CloudFormation modello per ogni stack dell'app. Include anche una copia di qualsiasi file, risorsa o Docker immagini a cui fai riferimento nella tua app.
Consulta le specifiche degli assemblaggi cloud
Per interagire con l'assembly cloud creato dall' AWS CDK app, in genere si utilizza il AWS CDK CLI. Tuttavia, qualsiasi strumento in grado di leggere il formato di assemblaggio cloud può essere utilizzato per distribuire l'app.
Distribuzione dell'applicazione
Per distribuire l'applicazione, si consiglia di utilizzare il CDK CLI cdk deploy
comando per avviare distribuzioni o configurare distribuzioni automatizzate.
Quando si esegue, il CDK cdk deploy
CLI inizia cdk synth
a prepararsi per la distribuzione. Il diagramma seguente illustra il ciclo di vita dell'app nel contesto di una distribuzione:

Durante la distribuzione, il CDK CLI prende l'assemblaggio cloud prodotto da Synthesis e lo distribuisce in un AWS ambiente. Le risorse vengono caricate su Amazon S3 e Amazon ECR e il CloudFormation modello viene inviato per AWS CloudFormation la distribuzione.
Quando inizia la fase di AWS CloudFormation distribuzione, l'app CDK ha già terminato l'esecuzione e l'uscita. Ciò comporta quanto segue:
-
L'app CDK non è in grado di rispondere agli eventi che si verificano durante la distribuzione, come la creazione di una risorsa o il completamento dell'intera distribuzione. Per eseguire il codice durante la fase di distribuzione, è necessario inserirlo nel AWS CloudFormation modello come risorsa personalizzata. Per ulteriori informazioni sull'aggiunta di una risorsa personalizzata all'app, consulta il AWS CloudFormation modulo o l'esempio di risorsa personalizzata
. Puoi anche configurare il modulo Triggers per eseguire il codice durante le distribuzioni. -
L'app CDK potrebbe dover funzionare con valori che non possono essere conosciuti al momento dell'esecuzione. Ad esempio, se l' AWS CDK app definisce un bucket Amazon S3 con un nome generato automaticamente e recuperi l'attributo (
bucket.bucketName
Python:bucket_name
), quel valore non è il nome del bucket distribuito. Invece, ottieni un valore.Token
Per determinare se un particolare valore è disponibile, chiamacdk.isUnresolved(value)
(Python:is_unresolved
). Per informazioni dettagliate, vedi Token e AWS CDK.
Autorizzazioni di distribuzione
Prima di poter eseguire la distribuzione, è necessario stabilire le autorizzazioni. Il diagramma seguente illustra le autorizzazioni utilizzate durante una distribuzione predefinita, quando si utilizza il processo di bootstrap e il sintetizzatore di stack predefiniti:

- L'attore avvia la distribuzione
-
Le implementazioni vengono avviate da un attore, utilizzando il CDK CLI. Un attore può essere una persona o un servizio come AWS CodePipeline.
Se necessario, il CDK CLI corre
cdk synth
quando corricdk deploy
. Durante la sintesi, l' AWS identità presupponeLookupRole
di eseguire ricerche contestuali nell' AWS ambiente. - Le autorizzazioni sono stabilite
-
Innanzitutto, le credenziali di sicurezza dell'attore vengono utilizzate per autenticarsi AWS e ottenere la prima identità IAM durante il processo. Per gli attori umani, il modo in cui le credenziali di sicurezza vengono configurate e ottenute dipende dal modo in cui l'utente o la sua organizzazione gestiscono gli utenti. Per ulteriori informazioni, consulta Configurare le credenziali di sicurezza per AWS CDK CLI. Per gli attori del servizio, ad esempio CodePipeline, viene assunto e utilizzato un ruolo di esecuzione IAM.
Successivamente, i ruoli IAM creati nell' AWS ambiente durante il bootstrap vengono utilizzati per stabilire le autorizzazioni necessarie per eseguire le azioni necessarie per la distribuzione. Per ulteriori informazioni su questi ruoli e su cosa concedono le autorizzazioni, consulta. Ruoli IAM creati durante il bootstrap Questo processo include quanto segue:
-
L' AWS identità assume il
DeploymentActionRole
ruolo e loCloudFormationExecutionRole
passa a lui CloudFormation, assicurandosi che CloudFormation assuma il ruolo quando esegue qualsiasi azione nell'ambiente dell'utente AWS .DeploymentActionRole
concede l'autorizzazione a eseguire distribuzioni nell'ambiente eCloudFormationExecutionRole
determina quali azioni possono essere eseguite. CloudFormation -
L' AWS identità presuppone il
FilePublishingRole
, che determina le azioni che possono essere eseguite sul bucket Amazon S3 creato durante il bootstrap. -
L' AWS identità presuppone il
ImagePublishingRole
, che determina le azioni che possono essere eseguite sul repository Amazon ECR creato durante il bootstrap. -
Se necessario, l' AWS identità presuppone l'esecuzione di ricerche contestuali nell'
LookupRole
ambiente. AWS Questa azione può essere eseguita anche durante la sintesi del modello.
-
- La distribuzione viene eseguita
-
Durante la distribuzione, il CDK CLI legge il parametro della versione bootstrap per confermare il numero di versione bootstrap. AWS CloudFormation legge questo parametro anche al momento dell'implementazione per confermare. Se le autorizzazioni per tutto il flusso di lavoro di distribuzione sono valide, viene eseguita la distribuzione. Le risorse vengono caricate nelle risorse avviate e il CloudFormation modello prodotto in fase di sintesi viene distribuito utilizzando il CloudFormation servizio come CloudFormation stack per fornire le risorse.