View a markdown version of this page

AWS Riferimento CDK CLI - AWS Kit di sviluppo cloud (AWS CDK) v2

Questo è il AWS Guida per gli sviluppatori di 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à.

AWS Riferimento CDK CLI

Il AWS Kit di sviluppo cloud (AWS CDK) Interfaccia a riga di comando (AWS CDK (CLI), noto anche come CDK Toolkit, è lo strumento principale per interagire con AWS App CDK. Esegue la tua app, interroga il modello applicativo che hai definito e produce e distribuisce AWS CloudFormation modelli generati da AWS CDK. Fornisce inoltre altre funzionalità utili per creare e lavorare con AWS Progetti CDK. Questo argomento contiene informazioni sui casi d'uso più comuni della CLI CDK.

La CLI CDK viene installata con il Node Package Manager. Nella maggior parte dei casi, consigliamo di installarlo a livello globale.

npm install -g aws-cdk # install latest version npm install -g aws-cdk@X.YY.Z # install specific version
Suggerimento

Se lavori regolarmente con più versioni di AWS CDK, valuta la possibilità di installare una versione corrispondente della CLI CDK nei singoli progetti CDK. Per fare ciò, ometti -g dal npm install comando. Quindi usa npx aws-cdk per invocarlo. Viene eseguita la versione locale, se ne esiste una, in caso contrario si ricorre a una versione globale.

Comandi CDK CLI

Tutti i comandi CDK CLI iniziano con cdk, seguito da un sottocomando (list, synthesize, deploy, ecc.). Alcuni sottocomandi hanno una versione più breve (ls, synth, ecc.) che è equivalente. Le opzioni e gli argomenti seguono il sottocomando in qualsiasi ordine.

Per una descrizione di tutti i sottocomandi, le opzioni e gli argomenti, vedi AWS Riferimento al comando CDK CLI.

Specifica le opzioni e i relativi valori

Le opzioni della riga di comando iniziano con due trattini (--). Alcune opzioni utilizzate di frequente hanno sinonimi composti da una sola lettera che iniziano con un solo trattino (ad esempio, --app ha un sinonimo -a). L'ordine delle opzioni in un comando CDK CLI non è importante.

Tutte le opzioni accettano un valore, che deve seguire il nome dell'opzione. Il valore può essere separato dal nome da uno spazio bianco o da un segno di uguale =. Le due opzioni seguenti sono equivalenti.

--toolkit-stack-name MyBootstrapStack --toolkit-stack-name=MyBootstrapStack

Alcune opzioni sono bandiere (booleane). È possibile specificare true o false come loro valore. Se non si fornisce un valore, tale valore viene considerato true. Puoi anche anteporre al nome dell'opzione il no- implicare false.

# sets staging flag to true --staging --staging=true --staging true # sets staging flag to false --no-staging --staging=false --staging false

Alcune opzioni, vale a dire --context, --parameters, --plugin, --tags, e --trust, può essere specificato più di una volta per specificare più valori. Questi sono indicati come aventi [array] digita la guida della CLI del CDK. Ad esempio:

cdk bootstrap --tags costCenter=0123 --tags responsibleParty=jdoe

Built-in aiuto

La CLI CDK ha una guida integrata. È possibile visualizzare una guida generale sull'utilità e un elenco dei sottocomandi forniti emettendo:

cdk --help

Per visualizzare l'aiuto per un particolare sottocomando, ad esempio deploy, specificalo prima di --help bandiera.

cdk deploy --help

Problema cdk version per visualizzare la versione della CLI CDK. Fornisci queste informazioni quando richiedi assistenza.

Rapporti sulla versione

Per ottenere informazioni su come AWS Viene utilizzato CDK, i costrutti utilizzati da AWS Le applicazioni CDK vengono raccolte e segnalate utilizzando una risorsa identificata come AWS::CDK::Metadata. Per saperne di più, vedi Configura AWS Rapporti sui dati di utilizzo del CDK.

Autenticazione con AWS

Esistono diversi modi in cui è possibile configurare l'accesso programmatico a AWS risorse, a seconda dell'ambiente e del AWS accesso a tua disposizione.

Per scegliere il metodo di autenticazione e configurarlo per la CLI CDK, vedi Configura le credenziali di sicurezza per AWS CDK CLI.

L'approccio consigliato per i nuovi utenti che si sviluppano localmente, ai quali non viene fornito un metodo di autenticazione dal datore di lavoro, è quello di istituire AWS Centro di identità IAM. Questo metodo include l'installazione di AWS CLI per facilitare la configurazione e per accedere regolarmente a AWS portale di accesso. Se si sceglie questo metodo, l'ambiente dovrebbe contenere i seguenti elementi dopo aver completato la procedura per Autenticazione IAM Identity Center nel AWS Guida di riferimento agli SDK e agli strumenti:

  • Il AWS CLI, che si utilizza per avviare un AWS accedere alla sessione del portale prima di eseguire l'applicazione.

  • A) condiviso AWS file di configurazione avere un [default] profilo con una serie di valori di configurazione a cui è possibile fare riferimento da AWS CDK. Per trovare la posizione di questo file, vedi Posizione dei file condivisi nel AWS Guida di riferimento agli SDK e agli strumenti.

  • Il condiviso config il file imposta il regione impostazione. Questo imposta l'impostazione predefinita AWS Regione: AWS CDK e CDK CLI vengono utilizzati per AWS richieste.

  • La CLI CDK utilizza il profilo Configurazione del provider di token SSO per acquisire le credenziali prima di inviare richieste a AWS. Il sso_role_name il valore, che è un ruolo IAM connesso a un set di autorizzazioni IAM Identity Center, dovrebbe consentire l'accesso a AWS servizi utilizzati nell'applicazione.

    Il seguente esempio config il file mostra un profilo predefinito impostato con la configurazione del provider di token SSO. Il profilo sso_session l'impostazione si riferisce al nome sso-session sezione. Il sso-session la sezione contiene le impostazioni per avviare un AWS accedere alla sessione del portale.

    [default] sso_session = <my-sso> sso_account_id = <111122223333> sso_role_name = <SampleRole> region = <us-east-1> output = <json> [sso-session <my-sso>] sso_region = <us-east-1> sso_start_url = <https://provided-domain.awsapps.com/start> sso_registration_scopes = sso:account:access

Avviare una AWS accedere alla sessione del portale

Prima di accedere AWS servizi, è necessario un servizio attivo AWS accedi alla sessione del portale per consentire alla CLI CDK di utilizzare l'autenticazione IAM Identity Center per risolvere le credenziali. A seconda della durata della sessione configurata, l'accesso alla fine scadrà e la CLI CDK riscontrerà un errore di autenticazione. Esegui il seguente comando in AWS CLI per accedere a AWS portale di accesso.

aws sso login

Se la configurazione del provider di token SSO utilizza un profilo denominato anziché il profilo predefinito, il comando è aws sso login --profile <NAME>. Specifica anche questo profilo al momento dell'emissione cdk comandi utilizzando --profile opzione o AWS_PROFILE variabile di ambiente.

Per verificare se hai già una sessione attiva, esegui quanto segue AWS Comando CLI.

aws sts get-caller-identity

La risposta a questo comando dovrebbe restituire l'account IAM Identity Center e il set di autorizzazioni configurati nel file config condiviso.

Nota

Se ne hai già uno attivo AWS accedi alla sessione del portale ed esegui aws sso login, non ti verrà richiesto di fornire le credenziali.

Il processo di accesso potrebbe richiedere all'utente di consentire AWS Accesso CLI ai tuoi dati. Dal momento che AWS La CLI è basata sull'SDK per Python, i messaggi di autorizzazione possono contenere variazioni di botocore nome.

Specifica la regione e altre configurazioni

La CLI CDK deve conoscere il AWS Regione in cui stai eseguendo la distribuzione e con cui effettuare l'autenticazione AWS. Ciò è necessario per le operazioni di distribuzione e per recuperare i valori di contesto durante la sintesi. Insieme, il tuo account e la tua regione costituiscono ambiente.

La regione può essere specificata utilizzando variabili di ambiente o nei file di configurazione. Queste sono le stesse variabili e gli stessi file usati da altri AWS strumenti come AWS CLI e i vari AWS SDK. La CLI CDK cerca queste informazioni nel seguente ordine.

  • Variabile di ambiente AWS_DEFAULT_REGION

  • Un profilo denominato definito nello standard AWS config file e specificato utilizzando --profile opzione attiva cdk comandi.

  • Le [default] sezione dello standard AWS config file.

Oltre a specificare AWS autenticazione e una regione in [default] sezione, puoi anche aggiungerne una o più [profile <NAME>] sezioni, dove <NAME> è il nome del profilo. Per ulteriori informazioni sui profili denominati, vedere File di configurazione e credenziali condivisi nel AWS Guida di riferimento agli SDK e agli strumenti.

Lo standard AWS config il file si trova in ~/.aws/config (macOS/Linux) o %USERPROFILE%\.aws\config (Windows). Per informazioni dettagliate e posizioni alternative, vedere Posizione dei file di configurazione e delle credenziali condivisi nel AWS Guida di riferimento agli SDK e agli strumenti

L'ambiente specificato nel tuo AWS App CDK utilizzando lo stack env la proprietà viene utilizzata durante la sintesi. Viene utilizzato per generare un ambiente specifico AWS CloudFormation modello e, durante la distribuzione, sostituisce l'account o la regione specificati da uno dei metodi precedenti. Per ulteriori informazioni, consulta Ambienti per AWS CDK.

Nota

Il AWS CDK utilizza le credenziali provenienti dagli stessi file di origine degli altri AWS strumenti e SDK, tra cui AWS Interfaccia a riga di comando. Tuttavia, il AWS Il CDK potrebbe comportarsi in modo leggermente diverso da questi strumenti. Utilizza il AWS SDK per JavaScript sotto il cofano. Per i dettagli completi sull'impostazione delle credenziali per AWS SDK per JavaScript, vedi Impostazione delle credenziali.

Facoltativamente, puoi utilizzare --role-arn (o -r) opzione per specificare l'ARN di un ruolo IAM da utilizzare per la distribuzione. Questo ruolo deve essere assunto da AWS account utilizzato.

Specifica il comando dell'app

Molte funzionalità della CLI CDK richiedono una o più AWS CloudFormation i modelli devono essere sintetizzati, il che a sua volta richiede l'esecuzione dell'applicazione. Il AWS CDK supporta programmi scritti in una varietà di lingue. Pertanto, utilizza un'opzione di configurazione per specificare l'esatto comando necessario per eseguire l'app. Questa opzione può essere specificata in due modi.

Innanzitutto, e più comunemente, può essere specificata utilizzando app chiave all'interno del file cdk.json. Si trova nella cartella principale del tuo AWS Progetto CDK. La CLI CDK fornisce un comando appropriato quando si crea un nuovo progetto con cdk init. Ecco il cdk.json da un fresco TypeScript progetto, per esempio.

{ "app": "npx ts-node bin/hello-cdk.ts" }

La CLI CDK cerca cdk.json nella directory di lavoro corrente quando si tenta di eseguire l'app. Per questo motivo, potreste tenere aperta una shell nella directory principale del progetto per l'immissione dei comandi CDK CLI.

La CLI CDK cerca anche la chiave dell'app ~/.cdk.json (cioè nella tua home directory) se non riesce a trovarla in ./cdk.json. Aggiungere qui il comando dell'app può essere utile se di solito lavorate con codice CDK nella stessa lingua.

Se ti trovi in un'altra directory o per eseguire l'app utilizzando un comando diverso da quello in cdk.json, usa il --app (o -a) opzione per specificarlo.

cdk --app "npx ts-node bin/hello-cdk.ts" ls

Durante la distribuzione, puoi anche specificare una directory contenente assembly cloud sintetizzati, come cdk.out, come valore di --app. Gli stack specificati vengono distribuiti da questa directory; l'app non è sintetizzata.

Specifica gli stack

Molti comandi CDK CLI (ad esempio, cdk deploy) funzionano sugli stack definiti nella tua app. Se la tua app contiene un solo stack, la CLI del CDK presume che tu intenda quello se non specifichi uno stack in modo esplicito.

Altrimenti, devi specificare lo stack o gli stack con cui vuoi lavorare. È possibile farlo specificando singolarmente gli stack desiderati per ID sulla riga di comando. Ricordate che l'ID è il valore specificato dal secondo argomento quando create un'istanza dello stack.

cdk synth PipelineStack LambdaStack

Puoi anche utilizzare i caratteri jolly per specificare gli ID che corrispondono a uno schema.

  • ? corrisponde a qualsiasi carattere singolo

  • * corrisponde a qualsiasi numero di caratteri (* da solo corrisponde a tutte le pile)

  • ** corrisponde a tutto in una gerarchia

Puoi anche usare il --all opzione per specificare tutti gli stack.

Se la tua app utilizza Pipeline CDK, la CDK CLI comprende gli stack e le fasi come una gerarchia. Inoltre, il --all opzione e * le wildcard corrispondono solo agli stack di primo livello. Per abbinare tutte le pile, usa **. Usa anche ** per indicare tutti gli stack sotto una particolare gerarchia.

Quando usi i caratteri jolly, racchiudi il modello tra virgolette o escludi i caratteri jolly con \. In caso contrario, la shell potrebbe tentare di espandere il pattern fino ai nomi dei file nella directory corrente. Nella migliore delle ipotesi, questo non farà quello che ti aspetti; nel peggiore dei casi, potresti distribuire stack che non avevi intenzione di fare. Questo non è strettamente necessario su Windows perché cmd.exe non espande i caratteri jolly, ma è comunque una buona pratica.

cdk synth "*Stack" # PipelineStack, LambdaStack, etc. cdk synth 'Stack?' # StackA, StackB, Stack1, etc. cdk synth \* # All stacks in the app, or all top-level stacks in a CDK Pipelines app cdk synth '**' # All stacks in a CDK Pipelines app cdk synth 'PipelineStack/Prod/**' # All stacks in Prod stage in a CDK Pipelines app
Nota

L'ordine in cui si specificano gli stack non è necessariamente l'ordine in cui verranno elaborati. La CLI CDK tiene conto delle dipendenze tra gli stack al momento di decidere l'ordine in cui elaborarli. Ad esempio, supponiamo che uno stack utilizzi un valore prodotto da un altro (come l'ARN di una risorsa definita nel secondo stack). In questo caso, il secondo stack viene sintetizzato prima del primo a causa di questa dipendenza. È possibile aggiungere dipendenze tra gli stack manualmente utilizzando lo stack addDependency() metodo.

Bootstrap il tuo AWS ambiente

L'implementazione degli stack con il CDK richiede uno speciale servizio dedicato AWS Risorse CDK da fornire. Le cdk bootstrap il comando crea le risorse necessarie per te. È necessario eseguire il bootstrap solo se si sta implementando uno stack che richiede queste risorse dedicate. Vedi AWS Bootstrap CDK per i dettagli.

cdk bootstrap

Se emesso senza argomenti, come mostrato qui, il cdk bootstrap il comando sintetizza l'app corrente e avvia gli ambienti in cui verranno distribuiti i suoi stack. Se l'app contiene stack indipendenti dall'ambiente, che non specificano esplicitamente un ambiente, l'account e la regione predefiniti vengono avviati o l'ambiente specificato utilizzando --profile.

Al di fuori di un'app, è necessario specificare in modo esplicito l'ambiente da avviare. Puoi farlo anche per avviare un ambiente non specificato nella tua app o locale AWS profilo. Le credenziali devono essere configurate (ad esempio in ~/.aws/credentials) per l'account e la regione specificati. È possibile specificare un profilo che contenga le credenziali richieste.

cdk bootstrap <ACCOUNT-NUMBER>/<REGION> # e.g. cdk bootstrap 1111111111/us-east-1 cdk bootstrap --profile test 1111111111/us-east-1
Importante

Ogni ambiente (account/region La combinazione) in cui si distribuisce tale stack deve essere avviata separatamente.

Potresti incorrere in AWS addebiti per quello che AWS Il CDK viene archiviato nelle risorse avviate. Inoltre, se usi --bootstrap-customer-key, un AWS Verrà creata una chiave KMS, che comporta anche costi per ambiente.

Nota

Le versioni precedenti del modello bootstrap creavano una chiave KMS per impostazione predefinita. Per evitare addebiti, riavvia il sistema utilizzando --no-bootstrap-customer-key.

Nota

CDK CLI v2 non supporta il modello bootstrap originale, denominato modello legacy, utilizzato di default con CDK v1.

Importante

Il moderno modello bootstrap concede efficacemente le autorizzazioni implicite da --cloudformation-execution-policies a qualsiasi AWS account nel --trust elenco. Per impostazione predefinita, questo estende le autorizzazioni di lettura e scrittura a qualsiasi risorsa nell'account di avvio. Assicurati di configurare lo stack di bootstrap con politiche e account affidabili con cui ti senti a tuo agio.

Crea una nuova app

Per creare una nuova app, creane una cartella, quindi, all'interno della directory, digita cdk init.

mkdir my-cdk-app cd my-cdk-app cdk init <TEMPLATE> --language <LANGUAGE>

Le lingue supportate (<LANGUAGE>) sono:

Codice Lingua

typescript

TypeScript

javascript

JavaScript

python

Python

java

Java

csharp

C#

Go

Go

<TEMPLATE>è un modello opzionale. Se il modello desiderato è app, l'impostazione predefinita, puoi ometterla. I modelli disponibili sono:

Modello Description

app (impostazione predefinita)

Crea un vuoto AWS App CDK.

sample-app

Crea un AWS App CDK con uno stack contenente una coda Amazon SQS e un argomento Amazon SNS.

I modelli utilizzano il nome della cartella del progetto per generare nomi per file e classi all'interno della nuova app.

Elenca gli stack

Per visualizzare un elenco degli ID degli stack presenti nel tuo AWS Applicazione CDK, inserisci uno dei seguenti comandi equivalenti:

cdk list cdk ls

Se l'applicazione contiene Pipeline CDK stacks, la CDK CLI visualizza i nomi degli stack come percorsi in base alla loro posizione nella gerarchia delle pipeline. (Ad esempio, PipelineStack, PipelineStack/Prod, e PipelineStack/Prod/MyService.)

Se la tua app contiene molti stack, puoi specificare gli ID stack completi o parziali degli stack da elencare. Per ulteriori informazioni, consulta Specifica gli stack.

Aggiungere il --long flag per visualizzare ulteriori informazioni sugli stack, inclusi i nomi degli stack e i relativi ambienti (AWS account e regione).

Sintetizza gli stack

Le cdk synthesize comando (quasi sempre abbreviato) synth) sintetizza uno stack definito nella tua app in un CloudFormation modello.

cdk synth # if app contains only one stack cdk synth MyStack cdk synth Stack1 Stack2 cdk synth "*" # all stacks in app
Nota

La CLI CDK esegue effettivamente l'app e sintetizza nuovi modelli prima della maggior parte delle operazioni (ad esempio durante la distribuzione o il confronto degli stack). Questi modelli sono memorizzati per impostazione predefinita nel cdk.out directory. Il cdk synth Il comando stampa semplicemente i modelli generati per uno o più stack specificati.

Vedi cdk synth --help per tutte le opzioni disponibili. Alcune delle opzioni utilizzate più di frequente sono descritte nella sezione seguente.

Specificate i valori di contesto

Usa il --context o -c opzione di passaggio contesto di runtime valori per la tua app CDK.

# specify a single context value cdk synth --context key=value MyStack # specify multiple context values (any number) cdk synth --context key1=value1 --context key2=value2 MyStack

Quando si distribuiscono più stack, i valori di contesto specificati vengono normalmente passati a tutti. Se lo desideri, puoi specificare valori diversi per ogni stack anteponendo il nome dello stack al valore di contesto.

# different context values for each stack cdk synth --context Stack1:key=value Stack2:key=value Stack1 Stack2

Specificate il formato di visualizzazione

Per impostazione predefinita, il modello sintetizzato viene visualizzato in formato YAML. Aggiungete il --json flag per visualizzarlo invece in formato JSON.

cdk synth --json MyStack

Specifica la directory di output

Aggiungete il --output (-o) opzione per scrivere i modelli sintetizzati in una directory diversa da cdk.out.

cdk synth --output=~/templates

Distribuisci gli stack

Le cdk deploy il sottocomando distribuisce uno o più stack specificati sul tuo AWS account.

cdk deploy # if app contains only one stack cdk deploy MyStack cdk deploy Stack1 Stack2 cdk deploy "*" # all stacks in app
Nota

La CLI CDK esegue la tua app e la sintetizza in modo fresco AWS CloudFormation modelli prima di distribuire qualsiasi cosa. Pertanto, è possibile utilizzare la maggior parte delle opzioni della riga di comando con cdk synth (ad esempio --context) può essere utilizzato anche con cdk deploy.

Vedi cdk deploy --help per tutte le opzioni disponibili. Alcune delle opzioni più utili sono illustrate nella sezione seguente.

Salta la sintesi

La cdk deploy Il comando normalmente sintetizza gli stack dell'app prima della distribuzione per assicurarsi che la distribuzione rifletta la versione più recente dell'app. Se sai di non aver modificato il codice dall'ultima versione cdk synth, puoi sopprimere la fase di sintesi ridondante durante la distribuzione. Per fare ciò, specifica il tuo progetto cdk.out cartella in --app opzione.

cdk deploy --app cdk.out StackOne StackTwo

Disabilita il rollback

AWS CloudFormation ha la capacità di annullare le modifiche in modo che le implementazioni siano atomiche. Ciò significa che hanno successo o falliscono nel loro insieme. Le AWS CDK eredita questa funzionalità perché sintetizza e implementa AWS CloudFormation modelli.

Il rollback assicura che le risorse siano sempre in uno stato costante, il che è fondamentale per gli stack di produzione. Tuttavia, mentre state ancora sviluppando l'infrastruttura, alcuni errori sono inevitabili e il ripristino delle implementazioni non riuscite può rallentarvi.

Per questo motivo, l'interfaccia a riga di comando del CDK consente di disattivare il rollback aggiungendo --no-rollback al tuo cdk deploy comando. Con questo flag, le distribuzioni non riuscite non vengono annullate. Invece, le risorse distribuite prima della risorsa fallita rimangono al loro posto e la distribuzione successiva inizia con la risorsa fallita. Trascorrerai molto meno tempo in attesa delle implementazioni e molto più tempo nello sviluppo della tua infrastruttura.

Sostituzione a caldo

Usa il --hotswap bandiera con cdk deploy per tentare di aggiornare il tuo AWS risorse direttamente invece di generare un AWS CloudFormation set di modifiche e distribuzione. La distribuzione risale a AWS CloudFormation distribuzione se l'hot swap non è possibile.

Attualmente l'hot swap supporta le funzioni Lambda, le macchine a stati Step Functions e le immagini dei container Amazon ECS. Il --hotswap il flag disabilita anche il rollback (cioè implica --no-rollback).

Importante

Hot-swapping non è consigliato per le distribuzioni di produzione.

modalità Watch

La modalità orologio del CDK CLI (cdk deploy --watch, o cdk watch in breve) monitora continuamente i file e le risorse di origine dell'app CDK per individuare eventuali modifiche. Esegue immediatamente una distribuzione degli stack specificati quando viene rilevata una modifica.

Per impostazione predefinita, queste distribuzioni utilizzano --hotswap flag, che velocizza l'implementazione delle modifiche alle funzioni Lambda. Inoltre, ricorre alla distribuzione tramite AWS CloudFormation se è stata modificata la configurazione dell'infrastruttura. Avere cdk watch esibisciti sempre al massimo AWS CloudFormation implementazioni, aggiungi --no-hotswap contrassegnare a cdk watch.

Eventuali modifiche apportate durante cdk watch sta già eseguendo una distribuzione vengono combinati in un'unica distribuzione, che inizia non appena la distribuzione in corso è completa.

La modalità Watch utilizza "watch" chiave nel progetto cdk.json per determinare quali file monitorare. Per impostazione predefinita, questi file sono i file e le risorse dell'applicazione, ma è possibile modificarli modificando "include" e "exclude" iscrizioni nel "watch" chiave. Quanto segue cdk.json il file mostra un esempio di queste voci.

{ "app": "mvn -e -q compile exec:java", "watch": { "include": "src/main/**", "exclude": "target/*" } }

cdk watch esegue il "build" comando da cdk.json per creare la tua app prima della sintesi. Se la tua distribuzione richiede comandi per creare o impacchettare il tuo codice Lambda (o qualsiasi altra cosa non presente nella tua app CDK), aggiungilo qui.

Git-style caratteri jolly, entrambi * e **, può essere utilizzato in "watch" e "build" chiavi. Ogni percorso viene interpretato in relazione alla directory principale di cdk.json. Il valore predefinito di include è **/*, vale a dire tutti i file e le cartelle nella cartella principale del progetto. exclude è opzionale.

Importante

La modalità Watch non è consigliata per le implementazioni di produzione.

Specifica AWS CloudFormation parametri

La CLI CDK supporta la specificazione AWS CloudFormation parametri al momento della distribuzione. È possibile fornirli sulla riga di comando dopo --parameters bandiera.

cdk deploy MyStack --parameters uploadBucketName=UploadBucket

Per definire più parametri, utilizzare più parametri --parameters bandiere.

cdk deploy MyStack --parameters uploadBucketName=UpBucket --parameters downloadBucketName=DownBucket

Se stai distribuendo più stack, puoi specificare un valore diverso di ogni parametro per ogni stack. A tale scopo, aggiungete al nome del parametro il nome dello stack e i due punti. Altrimenti, lo stesso valore viene passato a tutti gli stack.

cdk deploy MyStack YourStack --parameters MyStack:uploadBucketName=UploadBucket --parameters YourStack:uploadBucketName=UpBucket

Per impostazione predefinita, AWS CDK conserva i valori dei parametri delle distribuzioni precedenti e li utilizza nelle distribuzioni successive se non sono specificati in modo esplicito. Usa il --no-previous-parameters flag per richiedere la specificazione di tutti i parametri.

Specifica il file di output

Se il tuo stack dichiara AWS CloudFormation uscite, queste vengono normalmente visualizzate sullo schermo al termine della distribuzione. Per scriverli in un file in formato JSON, usa il --outputs-file bandiera.

cdk deploy --outputs-file outputs.json MyStack

Approva le modifiche relative alla sicurezza

Per proteggervi da modifiche involontarie che potrebbero influire sul vostro livello di sicurezza, la CLI CDK richiede di default di approvare le modifiche relative alla sicurezza prima di implementarle. È possibile specificare il livello di modifica che richiede l'approvazione:

cdk deploy --require-approval <LEVEL>

<LEVEL>Il valore di può essere uno dei seguenti:

Termine Significato

never

L'approvazione non è mai richiesta

any-change

Richiede l'approvazione per qualsiasi modifica allo stack

broadening (impostazione predefinita)

Richiede l'approvazione se le modifiche comportano un ampliamento delle autorizzazioni o delle regole del gruppo di sicurezza

L'impostazione può essere configurata anche in cdk.json file.

{ "app": "...", "requireApproval": "never" }

Confronta gli stack

Le cdk diff il comando confronta la versione corrente di uno stack (e le relative dipendenze) definita nell'app con le versioni già distribuite o con una versione salvata AWS CloudFormation modello e visualizza un elenco di modifiche.

Stack HelloCdkStack
IAM Statement Changes
┌───┬──────────────────────────────┬────────┬──────────────────────────────┬──────────────────────────────┬───────────┐
│   │ Resource                     │ Effect │ Action                       │ Principal                    │ Condition │
├───┼──────────────────────────────┼────────┼──────────────────────────────┼──────────────────────────────┼───────────┤
│ + │ ${Custom::S3AutoDeleteObject │ Allow  │ sts:AssumeRole               │ Service:lambda.amazonaws.com │           │
│   │ sCustomResourceProvider/Role │        │                              │                              │           │
│   │ .Arn}                        │        │                              │                              │           │
├───┼──────────────────────────────┼────────┼──────────────────────────────┼──────────────────────────────┼───────────┤
│ + │ ${MyFirstBucket.Arn}         │ Allow  │ s3:DeleteObject*             │ {aws}:${Custom::S3AutoDeleteOb │           │
│   │ ${MyFirstBucket.Arn}/*       │        │ s3:GetBucket*                │ jectsCustomResourceProvider/ │           │
│   │                              │        │ s3:GetObject*                │ Role.Arn}                    │           │
│   │                              │        │ s3:List*                     │                              │           │
└───┴──────────────────────────────┴────────┴──────────────────────────────┴──────────────────────────────┴───────────┘
IAM Policy Changes
┌───┬────────────────────────────────────────────────────────┬────────────────────────────────────────────────────────┐
│   │ Resource                                               │ Managed Policy ARN                                     │
├───┼────────────────────────────────────────────────────────┼────────────────────────────────────────────────────────┤
│ + │ ${Custom::S3AutoDeleteObjectsCustomResourceProvider/Ro │ {"Fn::Sub":"arn:${{aws}::Partition}:iam::aws:policy/serv │
│   │ le}                                                    │ ice-role/AWSLambdaBasicExecutionRole"}                 │
└───┴────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────┘
(NOTE: There may be security-related changes not in this list. See https://github.com/aws/aws-cdk/issues/1299)

Parameters
[+] Parameter AssetParameters/4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392/S3Bucket AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3BucketBF7A7F3F: {"Type":"String","Description":"S3 bucket for asset \"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\""}
[+] Parameter AssetParameters/4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392/S3VersionKey AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3VersionKeyFAF93626: {"Type":"String","Description":"S3 key for asset version \"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\""}
[+] Parameter AssetParameters/4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392/ArtifactHash AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392ArtifactHashE56CD69A: {"Type":"String","Description":"Artifact hash for asset \"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\""}

Resources
[+] {aws}::S3::BucketPolicy MyFirstBucket/Policy MyFirstBucketPolicy3243DEFD
[+] Custom::S3AutoDeleteObjects MyFirstBucket/AutoDeleteObjectsCustomResource MyFirstBucketAutoDeleteObjectsCustomResourceC52FCF6E
[+] {aws}::IAM::Role Custom::S3AutoDeleteObjectsCustomResourceProvider/Role CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092
[+] {aws}::Lambda::Function Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F
[~] {aws}::S3::Bucket MyFirstBucket MyFirstBucketB8884501
 ├─ [~] DeletionPolicy
 │   ├─ [-] Retain
 │   └─ [+] Delete
 └─ [~] UpdateReplacePolicy
     ├─ [-] Retain
     └─ [+] Delete

Per confrontare gli stack della tua app con la distribuzione esistente:

cdk diff MyStack

Per confrontare gli stack della tua app con quelli salvati CloudFormation modello:

cdk diff --template ~/stacks/MyStack.old MyStack

Importa le risorse esistenti in una pila

Puoi usare cdk import comando per affidare le risorse alla gestione di CloudFormation per un particolare AWS stack CDK. Questo è utile se stai migrando a AWS CDK, oppure state spostando risorse tra stack o cambiando il loro ID logico. cdk import utilizza CloudFormation importazioni di risorse. Vedi elenco delle risorse che possono essere importate qui.

Per importare una risorsa esistente in un AWS Stack CDK, segui i seguenti passaggi:

  • Assicurati che la risorsa non sia attualmente gestita da nessun altro CloudFormation pila. In caso affermativo, imposta innanzitutto la politica di rimozione su RemovalPolicy.RETAIN nello stack in cui si trova attualmente la risorsa ed esegui una distribuzione. Quindi, rimuovi la risorsa dallo stack ed esegui un'altra distribuzione. Questo processo assicurerà che la risorsa non sia più gestita da CloudFormation ma non la elimina.

  • Esegui un cdk diff per assicurarti che non vi siano modifiche in sospeso al AWS stack CDK in cui desideri importare le risorse. Le uniche modifiche consentite in un'operazione di «importazione» sono l'aggiunta di nuove risorse che si desidera importare.

  • Aggiungi i costrutti per le risorse che desideri importare nel tuo stack. Ad esempio, se desideri importare un bucket Amazon S3, aggiungi qualcosa come new s3.Bucket(this, 'ImportedS3Bucket', {});. Non apportare modifiche a nessun'altra risorsa.

    È inoltre necessario assicurarsi di modellare esattamente lo stato in cui si trova attualmente la risorsa nella definizione. Per l'esempio del bucket, assicuratevi di includere AWS Chiavi KMS, politiche relative al ciclo di vita e qualsiasi altra informazione rilevante sul bucket. In caso contrario, le successive operazioni di aggiornamento potrebbero non funzionare come previsto.

    Puoi scegliere se includere o meno il nome fisico del bucket. Di solito consigliamo di non includere i nomi delle risorse nel tuo AWS Definizioni delle risorse CDK in modo che diventi più facile distribuire le risorse più volte.

  • Esegui cdk import <STACKNAME>.

  • Se i nomi delle risorse non sono nel tuo modello, la CLI ti chiederà di inserire i nomi effettivi delle risorse che stai importando. Dopodiché, inizia l'importazione.

  • Quando cdk import riporta un esito positivo, la risorsa è ora gestita da AWS CDK e CloudFormation. Eventuali modifiche successive apportate alle proprietà delle risorse nel AWS App CDK: la configurazione del costrutto verrà applicata alla distribuzione successiva.

  • Per confermare che la definizione della risorsa nel tuo AWS L'app CDK corrisponde allo stato corrente della risorsa, puoi avviare un CloudFormation operazione di rilevamento della deriva.

Questa funzionalità attualmente non supporta l'importazione di risorse in stack annidati.

Configurazione (cdk.json)

I valori predefiniti per molti flag della riga di comando CDK CLI possono essere memorizzati in un progetto cdk.json file o nel .cdk.json file nella tua directory utente. Di seguito è riportato un riferimento alfabetico alle impostazioni di configurazione supportate.

Chiave Note Opzione CDK CLI

app

Il comando che esegue l'applicazione CDK.

--app

assetMetadata

Se false, CDK non aggiunge metadati alle risorse che utilizzano risorse.

--no-asset-metadata

bootstrapKmsKeyId

Sostituisce l'ID di AWS Chiave KMS utilizzata per crittografare il bucket di distribuzione Amazon S3.

--bootstrap-kms-key-id

build

Il comando che compila o crea l'applicazione CDK prima della sintesi. Non è consentito entrare ~/.cdk.json.

--build

browser

Il comando per avviare un browser Web per cdk docs sottocomando.

--browser

context

Vedi Valori di contesto e AWS CDK. I valori di contesto in un file di configurazione non verranno cancellati da cdk context --clear. (La CLI CDK inserisce i valori di contesto memorizzati nella cache in cdk.context.json.)

--context

debug

Se true, CDK CLI emette informazioni più dettagliate utili per il debug.

--debug

language

La lingua da usare per inizializzare nuovi progetti.

--language

lookups

Se false, non sono consentite ricerche contestuali. La sintesi avrà esito negativo se è necessario eseguire ricerche di contesto.

--no-lookups

notices

Se false, elimina la visualizzazione di messaggi relativi a vulnerabilità di sicurezza, regressioni e versioni non supportate.

--no-notices

output

Il nome della directory in cui verrà emesso l'assembly cloud sintetizzato (impostazione predefinita) "cdk.out").

--output

outputsFile

Il file in cui AWS CloudFormation gli output degli stack distribuiti verranno scritti (in JSON formato).

--outputs-file

pathMetadata

Se false, i metadati del percorso CDK non vengono aggiunti ai modelli sintetizzati.

--no-path-metadata

plugin

Matrice JSON che specifica i nomi dei pacchetti o i percorsi locali dei pacchetti che estendono il CDK

--plugin

profile

Nome dell'impostazione predefinita AWS profilo utilizzato per specificare la regione e le credenziali dell'account.

--profile

progress

Se impostato su "events", la CLI CDK visualizza tutto AWS CloudFormation eventi durante l'implementazione, anziché una barra di avanzamento.

--progress

requireApproval

Livello di approvazione predefinito per le modifiche che richiedono l'approvazione manuale. Vedi Approva le modifiche relative alla sicurezza.

--require-approval

rollback

Se false, le distribuzioni non riuscite non vengono ripristinate.

--no-rollback

staging

Se false, le risorse non vengono copiate nella directory di output (utilizzate per il debug locale dei file di origine con AWS SAM).

--no-staging

tags

JSON oggetto contenente tag (coppie chiave-valore) per lo stack.

--tags

toolkitBucketName

Il nome del bucket Amazon S3 utilizzato per distribuire risorse come funzioni Lambda e immagini di contenitori (vedi Avvia il tuo AWS ambiente).

--toolkit-bucket-name

toolkitStackName

Il nome dello stack bootstrap (vedi Avvia il tuo AWS ambiente).

--toolkit-stack-name

versionReporting

Se false, disattiva la segnalazione delle versioni.

--no-version-reporting

watch

oggetto JSON contenente "include" e "exclude" chiavi che indicano quali file devono (o non devono) attivare una ricostruzione del progetto quando vengono modificati. Vedi Modalità orologio.

--watch