Questa è la guida per sviluppatori AWS CDK v2. La versione precedente della CDK versione 1 è entrata 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à.
Implementazione di applicazioni AWS CDK
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 i tuoi stack. CDK Questo crea un CloudFormation modello e implementa gli artefatti per ogni stack dell'app. CDK 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) deve essere dotata di autorizzazioni valide.
-
L' AWS ambiente deve essere avviato.
-
È AWS CDK necessario conoscere le risorse avviate in cui caricare le risorse.
Prerequisiti per le distribuzioni CDK
Prima di poter distribuire un' AWS CDK applicazione, è necessario completare quanto segue:
-
Configurare le credenziali di sicurezza per. CDK CLI
-
Avvia il tuo ambiente. AWS
-
Configura un AWS ambiente per ciascuno dei tuoi CDK stack.
-
Sviluppa la tua CDK app.
Configura le credenziali di sicurezza
Per utilizzare con cui CDK CLI interagire AWS, è necessario configurare le credenziali di sicurezza sul computer locale. Per istruzioni, consulta Configurare le credenziali di sicurezza per AWS CDKCLI.
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 all'ambiente le risorse che CDK utilizza per eseguire e gestire le distribuzioni. Queste risorse includono un bucket Amazon Simple Storage Service (Amazon S3) e un repository Amazon Elastic Container Registry (ECRAmazon) per archiviare e gestire le risorse. Queste risorse includono anche AWS Identity and Access Management (IAM) ruoli utilizzati per fornire autorizzazioni durante lo sviluppo e la distribuzione.
Ti consigliamo di utilizzare il AWS CDK comando Command Line Interface (AWS CDK CLI) cdk bootstrap
per avviare il tuo ambiente. Se necessario, potete personalizzare il bootstrap o creare manualmente queste risorse nel vostro ambiente. Per istruzioni, consulta Avvia il tuo ambiente per utilizzarlo con AWS CDK.
Configura gli ambienti AWS
Ogni CDK stack 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 CDK progetto, crei e sviluppi la tua CDK app. All'interno della tua app, crei uno o più CDK stack. All'interno degli stack, è possibile importare e utilizzare i costrutti della AWS Construct Library per definire l'infrastruttura. Prima di poter eseguire la distribuzione, CDK l'app deve contenere almeno uno stack.
CDKsintesi dell'app
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
, puoi convalidare CDK l'app 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 Configurare ed eseguire la sintesi CDK dello stack.
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 CDK comportamento, ad esempio personalizzando il bootstrap o la sintesi, il comportamento di implementazione può variare. CDK
Il ciclo di vita dell'app
Quando esegui la sintesi, CDK l'app 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'CDKapp. 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 distribuzione nell'assemblaggio cloud risultante. Questi artefatti includono CloudFormation modelli, bundle di AWS Lambda applicazioni, risorse di file e Docker immagini e altri elementi di distribuzione. Nella maggior parte dei casi, non è necessario implementare il metodo.synthesize
Esecuzione dell'app
È CDK CLI necessario sapere come eseguire la tua CDK app. 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.
Se non hai creato il progetto utilizzando o se desideri sovrascrivere la riga di comando fornita incdk.json
, puoi fornire l'--app
opzione durante l'esecuzione del cdk
comando. CDK CLI
$
cdk --app 'executable
'cdk-command
...
Il executable
parte del comando indica il comando da eseguire per eseguire l'CDKapplicazione. Utilizzate le virgolette come illustrato, poiché tali comandi contengono spazi. Il cdk-command
è un sottocomando simile a synth
o deploy
che dice CDK CLI cosa vuoi fare con la tua app. Segui questo con tutte le opzioni aggiuntive necessarie per quel sottocomando.
CDKCLIPossono 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 immagine a cui fai riferimento nell'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 le distribuzioni o per configurare le distribuzioni automatizzate.
Quando si esegue, si avvia la preparazione per cdk deploy
la distribuzione. CDK CLI cdk synth
Il diagramma seguente illustra il ciclo di vita dell'app nel contesto di una distribuzione:
Durante l'implementazione, CDK CLI prende l'assemblaggio cloud prodotto da Synthesis e lo distribuisce in un ambiente. AWS Le risorse vengono caricate su Amazon S3 ECR e Amazon e il CloudFormation modello viene inviato AWS CloudFormation per la distribuzione.
Quando inizia la fase di AWS CloudFormation distribuzione, l'CDKapp ha già terminato l'esecuzione e l'uscita. Ciò comporta quanto segue:
-
L'CDKapp non è in grado di rispondere agli eventi che si verificano durante la distribuzione, ad esempio 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'CDKapp 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 distribuzioni vengono avviate da un attore, utilizzando il. CDK CLI Un attore può essere una persona, o un servizio come. AWS CodePipeline
Se necessario, viene CDK CLI eseguito
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 IAM identità 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 CDKCLI. Per gli attori del servizio, ad esempio CodePipeline, viene assunto e utilizzato un ruolo di IAM esecuzione.
Successivamente, i IAM ruoli 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 sui motivi per cui concedono le autorizzazioni, consulta. IAMruoli creati durante il bootstrap Questo processo include quanto segue:
-
L' AWS identità assume il
DeploymentActionRole
ruolo e loCloudFormationExecutionRole
cede a CloudFormation, assicurandosi che CloudFormation assuma il ruolo quando esegue qualsiasi azione nell'ambiente 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 ECR repository Amazon creato durante il bootstrap. -
Se necessario, l' AWS identità presuppone l'esecuzione di ricerche
LookupRole
contestuali nell'ambiente. AWS Questa azione può essere eseguita anche durante la sintesi del modello.
-
- La distribuzione viene eseguita
-
Durante la distribuzione, CDK CLI legge il parametro della versione bootstrap per confermare il numero di versione bootstrap. AWS CloudFormation legge inoltre questo parametro al momento della distribuzione 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.