Questa è la AWS CDK v2 Developer Guide. 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 alla CLI CDK
L'interfaccia a riga di comando (AWS CDK) AWS Cloud Development Kit (AWS CDK), nota anche come CDK Toolkit, è lo strumento principale per interagire con l'app CDK. AWS Esegue l'app, interroga il modello applicativo definito e produce e distribuisce i modelli generati dal CDK. AWS CloudFormation AWS Fornisce inoltre altre funzionalità utili per creare e lavorare con progetti CDK. AWS 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 lavorate regolarmente con più versioni del AWS CDK, prendete in considerazione l'installazione di una versione corrispondente della CLI CDK nei singoli progetti CDK. Per fare ciò, -g ometti il comando. npm install 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 concdk, seguito da un sottocomando (list,,synthesize, deploy ecc.). Alcuni sottocomandi hanno una versione più breve (ls,synth, ecc.) equivalente. Le opzioni e gli argomenti seguono il sottocomando in qualsiasi ordine.
Per una descrizione di tutti i sottocomandi, le opzioni e gli argomenti, vedere il riferimento ai comandi AWS CDK CLI.
Specificate 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 valore. Se non si fornisce un valore, tale valore viene considerato taletrue. Puoi anche anteporre false al nome dell'opzione un no- prefisso.
# 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, e --plugin --tags--trust, possono essere specificate più di una volta per specificare più valori. Queste sono indicate come [array] digitate nella guida della CLI di 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 esempiodeploy, specificalo prima del flag. --help
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 viene utilizzato il AWS CDK, i costrutti utilizzati dalle applicazioni AWS CDK vengono raccolti e riportati utilizzando una risorsa identificata come. AWS::CDK::Metadata Per saperne di più, consulta Configurare i report sui dati di utilizzo del AWS CDK.
Autenticazione con AWS
Esistono diversi modi per configurare l'accesso programmatico alle AWS risorse, a seconda dell'ambiente e dell' AWS accesso disponibile.
Per scegliere il metodo di autenticazione e configurarlo per la CLI CDK, consulta Configurare le credenziali di sicurezza per la CLI CDK. AWS
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 configurare IAM Identity Center. AWS Questo metodo include l'installazione della AWS CLI per facilitare la configurazione e per accedere regolarmente al portale di AWS accesso. Se scegli questo metodo, il tuo ambiente dovrebbe contenere i seguenti elementi dopo aver completato la procedura per l'autenticazione IAM Identity Center nella Guida di riferimento per AWS SDK e strumenti:
-
L' AWS interfaccia a riga di comando, utilizzata per avviare una sessione del portale di AWS accesso prima di eseguire l'applicazione.
-
Un file di AWS configurazione condiviso con un
[default]profilo con un set di valori di configurazione a cui è possibile fare riferimento dal CDK. AWS Per trovare la posizione di questo file, consulta Posizione dei file condivisi nella Guida di riferimento di AWS SDK and Tools. -
Il
configfile condiviso imposta l'impostazione della regione. Questo imposta la AWS regione predefinita utilizzata da AWS CDK e CDK CLI per le richieste. AWS -
La CLI CDK utilizza la configurazione del provider di token SSO del profilo per acquisire le credenziali prima di inviare richieste a. AWS Il
sso_role_namevalore, che è un ruolo IAM connesso a un set di autorizzazioni IAM Identity Center, dovrebbe consentire l'accesso ai AWS servizi utilizzati nell'applicazione.Il seguente
configfile di esempio mostra un profilo predefinito impostato con la configurazione del provider di token SSO. L'sso_sessionimpostazione del profilo si riferisce allasso-sessionsezione denominata. Lasso-sessionsezione contiene le impostazioni per avviare una sessione del portale di AWS accesso.[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 un AWS accedere alla sessione del portale
Prima di accedere ai AWS servizi, è necessaria una sessione attiva del portale di AWS accesso affinché la CLI CDK possa 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 nella AWS CLI per accedere al portale di accesso. AWS
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> Specificate questo profilo anche quando emettete cdk comandi utilizzando l'--profileopzione o la variabile di AWS_PROFILE ambiente.
Per verificare se hai già una sessione attiva, esegui il seguente comando AWS 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 disponi già di una sessione attiva del portale di AWS accesso e la eseguiaws sso login, non ti verrà richiesto di fornire le credenziali.
Il processo di accesso potrebbe richiedere all'utente di consentire alla AWS CLI di accedere ai dati. Poiché la AWS CLI è basata sull'SDK per Python, i messaggi di autorizzazione possono contenere variazioni del nome. botocore
Specifica la regione e altre configurazioni
L'interfaccia a riga di comando del CDK deve conoscere la AWS regione in cui si sta eseguendo l'implementazione 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, l'account e la regione costituiscono l'ambiente.
La regione può essere specificata utilizzando variabili di ambiente o nei file di configurazione. Queste sono le stesse variabili e file utilizzati da altri AWS strumenti come la 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 nel AWS
configfile standard e specificato utilizzando l'--profileopzione suicdkcomandi. -
La
[default]sezione del AWSconfigfile standard.
Oltre a specificare AWS l'autenticazione e una regione nella [default] sezione, puoi anche aggiungere una o più [profile <NAME>] sezioni, dove <NAME> è il nome del profilo. Per ulteriori informazioni sui profili denominati, consulta i file di configurazione e credenziali condivisi nella Guida di riferimento di AWS SDK and Tools.
Il AWS
config file standard si trova in ~/.aws/config (macOS/Linux) o %USERPROFILE%\.aws\config (Windows). Per dettagli e posizioni alternative, vedi Posizione dei file di configurazione e delle credenziali condivisi nella Guida di riferimento di AWS SDK and Tools
L'ambiente specificato nell'app AWS CDK utilizzando la env proprietà dello stack viene utilizzato durante la sintesi. Viene utilizzato per generare un AWS CloudFormation modello specifico dell'ambiente e, durante la distribuzione, sovrascrive l'account o la regione specificati da uno dei metodi precedenti. Per ulteriori informazioni, consulta Environments for the CDK. AWS
Nota
Il AWS CDK utilizza le credenziali degli stessi file sorgente di altri AWS strumenti e SDK, inclusa l'AWS interfaccia a riga di comando. Tuttavia, il AWS CDK potrebbe comportarsi in modo leggermente diverso da questi strumenti. Utilizza l' AWS SDK per JavaScript Under the Hood. Per i dettagli completi sulla configurazione delle credenziali per l' AWS SDK per JavaScript, vedi Impostazione delle credenziali.
Facoltativamente, puoi utilizzare l'opzione --role-arn (o-r) per specificare l'ARN di un ruolo IAM da utilizzare per la distribuzione. Questo ruolo deve essere assunto dall'account utilizzato. AWS
Specifica il comando dell'app
Molte funzionalità della CLI CDK richiedono la sintesi di uno o più AWS CloudFormation modelli, 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 la app chiave all'interno del filecdk.json. Si trova nella directory principale del progetto AWS CDK. La CLI CDK fornisce un comando appropriato quando si crea un nuovo progetto con. cdk init Ecco, ad esempio, quello cdk.json di un nuovo TypeScript progetto.
{ "app": "npx ts-node bin/hello-cdk.ts" }
La CLI CDK cerca cdk.json nella directory di lavoro corrente quando 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. ./cdk.json Aggiungere qui il comando app può essere utile se di solito lavori con codice CDK nella stessa lingua.
Se ti trovi in un'altra directory o per eseguire l'app utilizzando un comando diverso da quello incdk.json, usa l'opzione --app (o-a) per specificarlo.
cdk --app "npx ts-node bin/hello-cdk.ts" ls
Durante la distribuzione, puoi anche specificare una directory contenente assembly cloud sintetizzati, ad esempiocdk.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 esempiocdk deploy) funzionano sugli stack definiti nella tua app. Se la tua app contiene un solo stack, la CLI 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 l'--allopzione per specificare tutti gli stack.
Se la tua app utilizza CDK Pipelines, la CDK CLI interpreta gli stack e gli stage come una gerarchia. Inoltre, l'--allopzione e la jolly corrispondono solo agli stack di primo livello. * Per abbinare tutte le pile, usa. ** Utilizzate anche ** per indicare tutte le pile in 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 provare ad espandere il pattern 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 il metodo dello stack.
addDependency()
Avvia il tuo AWS ambiente
L'implementazione degli stack con il CDK richiede il provisioning di speciali risorse AWS CDK dedicate. Il cdk bootstrap 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 CDK bootstrapping per i dettagli.
cdk bootstrap
Se emesso senza argomenti, come mostrato qui, il cdk bootstrap 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 che non è specificato nell'app o nel profilo locale. AWS 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 combinazione) in cui si distribuisce tale stack deve essere avviato separatamente.
È possibile che vengano AWS addebitati costi per ciò che il AWS CDK memorizza nelle risorse avviate. Inoltre, se si utilizza--bootstrap-customer-key, verrà creata una chiave AWS 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 utilizzando. --no-bootstrap-customer-key
Nota
CDK CLI v2 non supporta il modello di bootstrap originale, denominato modello legacy, utilizzato di default con CDK v1.
Importante
Il moderno modello bootstrap concede efficacemente le autorizzazioni implicite a qualsiasi account nell'elenco. --cloudformation-execution-policies AWS --trust 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 policy 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, digitacdk init.
mkdir my-cdk-app cd my-cdk-app cdk init <TEMPLATE> --language <LANGUAGE>
Le lingue supportate (<LANGUAGE>) sono:
| Codice | Lingua |
|---|---|
|
|
TypeScript |
|
|
JavaScript |
|
|
Python |
|
|
Java |
|
|
C# |
|
|
Go |
<TEMPLATE>è un modello opzionale. Se il modello desiderato è app, l'impostazione predefinita, puoi ometterlo. I modelli disponibili sono:
| Modello | Description |
|---|---|
|
|
Crea un'app AWS CDK vuota. |
|
|
Crea un'app AWS 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 nella tua applicazione AWS CDK, inserisci uno dei seguenti comandi equivalenti:
cdk list cdk ls
Se l'applicazione contiene stack di CDK Pipelines, la CLI CDK visualizza i nomi degli stack come percorsi in base alla loro posizione nella gerarchia delle pipeline. (Ad esempio,, e.) PipelineStack PipelineStack/Prod 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 Specificare gli stack.
Aggiungi 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
Il cdk synthesize comando (quasi sempre abbreviatosynth) sintetizza uno stack definito nell'app in un modello. CloudFormation
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 nella directory. cdk.out Il cdk synth comando stampa semplicemente i modelli generati per uno o più stack specificati.
Vedi tutte cdk synth --help le opzioni disponibili. Alcune delle opzioni utilizzate più di frequente sono descritte nella sezione seguente.
Specificate i valori di contesto
Usa l'-copzione --context o per passare i valori del contesto di runtime alla 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. Aggiungi invece il --json flag per visualizzarlo in formato JSON.
cdk synth --json MyStack
Specifica la directory di output
Aggiungete l'opzione --output (-o) per scrivere i modelli sintetizzati in una directory diversa da. cdk.out
cdk synth --output=~/templates
Distribuisci gli stack
Il cdk deploy sottocomando distribuisce uno o più stack specificati nel tuo account. AWS
cdk deploy # if app contains only one stack cdk deploy MyStack cdk deploy Stack1 Stack2 cdk deploy "*" # all stacks in app
Nota
L'interfaccia a riga di comando CDK esegue l'app e sintetizza nuovi modelli prima di distribuire qualsiasi cosa. AWS CloudFormation Pertanto, la maggior parte delle opzioni della riga di comando che puoi utilizzare con cdk synth (ad esempio,--context) possono essere utilizzate anche con. cdk deploy
cdk deploy --helpConsulta tutte le opzioni disponibili. Alcune delle opzioni più utili sono illustrate nella sezione seguente.
Salta la sintesi
Il cdk deploy 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 voltacdk synth, puoi eliminare la fase di sintesi ridondante durante la distribuzione. A tale scopo, specificate la cdk.out cartella del progetto nell'opzione. --app
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. Il AWS CDK eredita questa funzionalità perché sintetizza e distribuisce modelli. AWS CloudFormation
Il rollback assicura che le risorse siano sempre in uno stato coerente, 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, la CLI CDK consente di disattivare il rollback aggiungendolo al comando. --no-rollback cdk deploy 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 flag with cdk deploy per tentare di aggiornare direttamente AWS le tue risorse invece di generare un set di AWS CloudFormation modifiche e distribuirlo. La distribuzione ritorna alla 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 flag disabilita anche il rollback (cioè implica). --no-rollback
Importante
Hot-swapping non è consigliato per le distribuzioni di produzione.
modalità Watch
La modalità watch (cdk deploy --watcho in breve) della CLI CDK monitora continuamente i file sorgente e le risorse dell'app CDK cdk watch per individuare eventuali modifiche. Esegue immediatamente una distribuzione degli stack specificati quando viene rilevata una modifica.
Per impostazione predefinita, queste implementazioni utilizzano il --hotswap flag, che velocizza l'implementazione delle modifiche alle funzioni Lambda. Inoltre, si ricorre alla distribuzione AWS CloudFormation se è stata modificata la configurazione dell'infrastruttura. Per eseguire cdk watch sempre AWS CloudFormation implementazioni complete, aggiungi il --no-hotswap flag a. cdk watch
Tutte le modifiche apportate mentre cdk watch si sta già eseguendo una distribuzione vengono combinate in un'unica distribuzione, che inizia non appena la distribuzione in corso è completa.
La modalità Watch utilizza la "watch" chiave contenuta 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 le "exclude" voci "include" e nella "watch" chiave. Il cdk.json file seguente mostra un esempio di queste voci.
{ "app": "mvn -e -q compile exec:java", "watch": { "include": "src/main/**", "exclude": "target/*" } }
cdk watchesegue il "build" comando da cdk.json cui compilare l'app prima della sintesi. Se la distribuzione richiede comandi per creare o impacchettare il codice Lambda (o qualsiasi altra cosa non presente nell'app CDK), aggiungilo qui.
Git-style I caratteri jolly, * sia che**, possono essere utilizzati nei tasti e. "watch" "build" Ogni percorso viene interpretato in relazione alla directory principale dicdk.json. Il valore predefinito include è**/*, ovvero tutti i file e le directory nella directory principale del progetto. excludeè facoltativo.
Importante
La modalità Watch non è consigliata per le distribuzioni di produzione.
Specifica AWS CloudFormation parametri
La CLI CDK supporta la specificazione dei AWS CloudFormation parametri al momento della distribuzione. Puoi fornirli sulla riga di comando seguendo il flag. --parameters
cdk deploy MyStack --parameters uploadBucketName=UploadBucket
Per definire più parametri, utilizzate più --parameters flag.
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, il AWS CDK conserva i valori dei parametri delle distribuzioni precedenti e li utilizza nelle distribuzioni successive se non sono specificati esplicitamente. Utilizzate il --no-previous-parameters flag per richiedere la specificazione di tutti i parametri.
Specifica il file di output
Se lo stack dichiara degli AWS CloudFormation output, questi vengono normalmente visualizzati sullo schermo al termine della distribuzione. Per scriverli in un file in formato JSON, usa il flag. --outputs-file
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 |
|---|---|
|
|
L'approvazione non è mai richiesta |
|
|
Richiede l'approvazione per qualsiasi modifica allo stack |
|
|
Richiede l'approvazione se le modifiche comportano un ampliamento delle autorizzazioni o delle regole del gruppo di sicurezza |
L'impostazione può anche essere configurata nel cdk.json file.
{ "app": "...", "requireApproval": "never" }
Confronta gli stack
Il cdk diff comando confronta la versione corrente di uno stack (e le relative dipendenze) definita nell'app con le versioni già distribuite o con un AWS CloudFormation modello salvato 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 un modello salvato: CloudFormation
cdk diff --template ~/stacks/MyStack.old MyStack
Importa le risorse esistenti in uno stack
È possibile utilizzare il cdk import comando per gestire le risorse di CloudFormation un particolare stack AWS CDK. Ciò è utile se stai migrando a AWS CDK o stai spostando risorse tra stack o modificando il loro ID logico. Utilizza le importazioni di risorse. cdk import CloudFormation Consulta l'elenco delle risorse che possono essere importate qui.
Per importare una risorsa esistente in uno stack AWS CDK, segui i seguenti passaggi:
-
Assicurati che la risorsa non sia attualmente gestita da nessun altro CloudFormation stack. In tal caso, imposta innanzitutto la politica di rimozione sullo stack
RemovalPolicy.RETAINin 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 elimini. -
Esegui
cdk diffa per assicurarti che non vi siano modifiche in sospeso allo stack AWS CDK in cui desideri importare le risorse. Le uniche modifiche consentite in un'operazione di «importazione» sono l'aggiunta di nuove risorse da 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, assicurati di includere le chiavi AWS KMS, le politiche relative al ciclo di vita e qualsiasi altra informazione rilevante sul bucket. In caso contrario, le successive operazioni di aggiornamento potrebbero non fare ciò che ti aspetti.
Puoi scegliere se includere o meno il nome fisico del bucket. Di solito consigliamo di non includere i nomi delle risorse nelle definizioni delle risorse AWS CDK in modo da semplificare l'implementazione delle risorse più volte.
-
Esegui
cdk import <STACKNAME>. -
Se i nomi delle risorse non sono presenti nel modello, la CLI chiederà di inserire i nomi effettivi delle risorse che state importando. Dopodiché, inizia l'importazione.
-
Quando il
cdk importrapporto ha esito positivo, la risorsa è ora gestita da AWS CDK e CloudFormation. Qualsiasi modifica successiva apportata alle proprietà della risorsa nell'app AWS CDK, la configurazione del costrutto verrà applicata alla distribuzione successiva. -
Per confermare che la definizione della risorsa nell'app AWS CDK corrisponda 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 nel cdk.json file di progetto o nel file nella directory utente. .cdk.json Di seguito è riportato un riferimento alfabetico alle impostazioni di configurazione supportate.
| Chiave | Note | Opzione CDK CLI |
|---|---|---|
|
|
Il comando che esegue l'applicazione CDK. |
|
|
|
Se |
|
|
|
Sostituisce l'ID della chiave AWS KMS utilizzata per crittografare il bucket di distribuzione Amazon S3. |
|
|
|
Il comando che compila o crea l'applicazione CDK prima della sintesi. Non è consentito l'accesso. |
|
|
|
Il comando per l'avvio di un browser Web per il |
|
|
|
Vedi Valori di contesto e CDK. AWS I valori di contesto in un file di configurazione non verranno cancellati da. |
|
|
|
Se |
|
|
|
La lingua da usare per inizializzare nuovi progetti. |
|
|
|
Se |
|
|
|
Se |
|
|
|
Il nome della directory in cui verrà emesso il cloud assembly sintetizzato (impostazione predefinita). |
|
|
|
Il file in cui verranno AWS CloudFormation scritti gli output degli stack distribuiti (in formato). |
|
|
|
Se |
|
|
|
Matrice JSON che specifica i nomi dei pacchetti o i percorsi locali dei pacchetti che estendono il CDK |
|
|
|
Nome del AWS profilo predefinito utilizzato per specificare la regione e le credenziali dell'account. |
|
|
|
Se impostato su |
|
|
|
Livello di approvazione predefinito per le modifiche che richiedono l'approvazione manuale. Vedi Approvare le modifiche relative alla sicurezza. |
|
|
|
In caso contrario |
|
|
|
Se |
|
|
|
|
|
|
|
Il nome del bucket Amazon S3 utilizzato per distribuire risorse come funzioni Lambda e immagini di contenitori (vedi Bootstrap your environment). AWS |
|
|
|
Il nome dello stack bootstrap (vedi Bootstrap your environment). AWS |
|
|
|
Se |
|
|
|
Oggetto JSON contenente |
|