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à.
AWS CDK CLI riferimento
L'interfaccia a riga di comando ( AWS Cloud Development Kit (AWS CDK) AWS CDK CLI), nota anche come CDK Toolkit, è lo strumento principale per interagire con AWS CDK l'app. Esegue la tua app, interroga il modello di applicazione che hai definito e produce e distribuisce i AWS CloudFormation modelli generati da. AWS CDK Fornisce inoltre altre funzionalità utili per creare e lavorare con progetti. AWS CDK Questo argomento contiene informazioni sui casi d'uso comuni di CDK CLI.
Il CDK CLI viene installato con Node Package Manager. Nella maggior parte dei casi, si consiglia 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 di CDK CLI in singoli CDK progetti. Per fare ciò, ometti -g
dal npm install
comando. Quindi usa npx aws-cdk
per invocarlo. Questo esegue la versione locale se ne esiste una, tornando a una versione globale in caso contrario.
CDK CLI comandi
Tutto CDK CLI i comandi iniziano concdk
, 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, vedere. AWS CDK CLI riferimento al comando
Specificare 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 CDK CLI il comando non è importante.
Tutte le opzioni accettano un valore, che deve seguire il nome dell'opzione. Il valore può essere separato dal nome con uno spazio bianco o con 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
specificare il loro valore. Se non si fornisce un valore, il valore viene considerato uguale atrue
. È inoltre possibile aggiungere al nome dell'opzione il prefisso «no-
da false
implicare».
# 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. Si nota che queste hanno [array]
digitato il CDK CLI aiuto. Per esempio:
cdk bootstrap --tags costCenter=0123 --tags responsibleParty=jdoe
Aiuto integrato
Il CDK CLI ha un aiuto integrato. È possibile visualizzare una guida generale sull'utilità e un elenco dei sottocomandi forniti emettendo:
cdk --help
Per visualizzare l'aiuto relativo a un particolare sottocomando, ad esempiodeploy
, specificatelo prima del flag. --help
cdk deploy --help
Problema relativo cdk version
alla visualizzazione della versione di CDK CLI. Fornisci queste informazioni quando richiedi assistenza.
Rapporti sulle versioni
Per ottenere informazioni su come AWS CDK viene utilizzato, i costrutti utilizzati dalle AWS CDK applicazioni vengono raccolti e riportati utilizzando una risorsa identificata comeAWS::CDK::Metadata
. Questa risorsa viene aggiunta ai AWS CloudFormation modelli e può essere facilmente esaminata. Queste informazioni possono essere utilizzate anche AWS per identificare gli stack utilizzando un costrutto con problemi noti di sicurezza o affidabilità. Possono essere utilizzate anche per contattare gli utenti con informazioni importanti.
Nota
Prima della versione 1.93.0, AWS CDK riportavano i nomi e le versioni dei moduli caricati durante la sintesi, anziché i costrutti utilizzati nello stack.
Per impostazione predefinita, AWS CDK riporta l'uso dei costrutti nei seguenti NPM moduli utilizzati nello stack:
-
AWS CDK modulo principale
-
AWS Moduli Construct Library
-
AWS Modulo Solutions Constructs
-
AWS Modulo Render Farm Deployment Kit
La AWS::CDK::Metadata
risorsa ha un aspetto simile alla seguente.
CDKMetadata: Type: "AWS::CDK::Metadata" Properties: Analytics: "v2:deflate64:H4sIAND9SGAAAzXKSw5AMBAA0L1b2PdzBYnEAdio3RglglY60zQi7u6TWL/XKmNUlxeQSOKwaPTBqrNhwEWU3hGHiCzK0dWWfAxoL/Fd8mvk+QkS/0X6BdjnCdgmOOQKWz+AqqLDt2Y3YMnLYWwAAAA="
La Analytics
proprietà è un elenco con gzip, codificato in base64 e con prefisso, dei costrutti nello stack.
Disattiva la segnalazione delle versioni
È possibile disattivare la segnalazione delle versioni utilizzando il CDK CLI o configurando il cdk.json
file del progetto.
Per disattivare la segnalazione delle versioni utilizzando il CDK CLI
-
Usa l'
--no-version-reporting
opzione con qualsiasi CDK CLI comando per disattivare un singolo comando. Di seguito è riportato un esempio di disattivazione durante la sintesi del modello:$
cdk synth --no-version-reporting
Poiché AWS CDK sintetizza automaticamente i modelli durante l'esecuzione
cdk deploy
, è consigliabile utilizzarlo anche--no-version-reporting
con il comando.cdk deploy
Per disattivare la segnalazione delle versioni configurando il file cdk.json
-
Impostato
versionReporting
sufalse
in./cdk.json
o~/.cdk.json
. Questa opzione ti disattiva per impostazione predefinita. Di seguito è riportato un esempio:{ "app": "...", "versionReporting": false }
Dopo la configurazione, puoi ignorare questo comportamento e attivare l'opzione
--version-reporting
specificando un singolo comando.
Nota
Quando disattivate la segnalazione delle versioni, non AWS CDK raccoglieranno né segnaleranno i dati sui costrutti che state utilizzando. Per questo motivo, non AWS CDK saranno in grado di identificare se hai subito problemi di sicurezza e non ti invieranno notifiche in merito.
Autenticazione con AWS
Esistono diversi modi in cui è possibile configurare l'accesso programmatico alle AWS risorse, a seconda dell'ambiente e dell' AWS accesso a disposizione.
Per scegliere il metodo di autenticazione e configurarlo per CDK CLI, consulta Configurare le credenziali di sicurezza per AWS CDKCLI.
L'approccio consigliato per i nuovi utenti che si sviluppano localmente, ai quali non viene fornito un metodo di autenticazione dal datore di lavoro, è l'impostazione AWS IAM Identity Center. Questo metodo include l'installazione di AWS CLI per facilitare la configurazione e per accedere regolarmente al portale di AWS accesso. Se si sceglie questo metodo, l'ambiente dovrebbe contenere i seguenti elementi dopo aver completato la procedura per l'autenticazione di IAM Identity Center nella AWS SDKsand Tools Reference Guide:
-
Il AWS CLI, che viene utilizzato per avviare una sessione del portale di AWS accesso prima di eseguire l'applicazione.
-
Un AWS
config
file condiviso con un[default]
profilo con un set di valori di configurazione a cui è possibile fare riferimento da. AWS CDK Per trovare la posizione di questo file, consulta Posizione dei file condivisi nella Guida di riferimento agli strumenti AWS SDKs e agli strumenti. -
Il
config
file condiviso imposta l'region
impostazione. Questo imposta l'impostazione predefinita Regione AWS di AWS CDK e CDK CLI utilizzare per AWS le richieste. -
La CDK CLI utilizza la configurazione del provider di SSO token del profilo per acquisire le credenziali prima di inviare richieste a AWS. Il
sso_role_name
valore, che è un IAM ruolo collegato a un set di autorizzazioni di IAM Identity Center, dovrebbe consentire l'accesso ai Servizi AWS dati utilizzati nell'applicazione.Il seguente
config
file di esempio mostra un profilo predefinito impostato con la configurazione del provider di SSO token. L'sso_session
impostazione del profilo si riferisce allasso-session
sezione denominata. Lasso-session
sezione 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-sessionmy-sso
] sso_region =us-east-1
sso_start_url =https://provided-domain.awsapps.com/start
sso_registration_scopes = sso:account:access
Avviare una sessione del portale di AWS accesso
Prima di accedere Servizi AWS, è necessaria una sessione attiva del portale di AWS accesso per CDK CLI per utilizzare l'autenticazione IAM Identity Center per risolvere le credenziali. A seconda della durata della sessione configurata, l'accesso alla fine scadrà e CDK CLI incontrerà un errore di autenticazione. Esegui il seguente comando in AWS CLI per accedere al portale di AWS accesso.
aws sso login
Se la configurazione del provider di SSO token utilizza un profilo denominato anziché il profilo predefinito, il comando èaws sso login --profile
. Specificate inoltre questo profilo quando emettete cdk comandi utilizzando l'--profileopzione o la variabile di NAME
AWS_PROFILE
ambiente.
Per verificare se hai già una sessione attiva, esegui il AWS CLI comando seguente.
aws sts get-caller-identity
La risposta a questo comando dovrebbe riportare l'account IAM Identity Center e il set di autorizzazioni configurati nel config
file condiviso.
Nota
Se hai già una sessione attiva del portale di AWS accesso ed eseguiaws sso login
, non ti verrà richiesto di fornire credenziali.
La procedura di accesso potrebbe richiedere all'utente di consentire l' AWS CLI accesso ai dati. Poiché AWS CLI è basato su SDK for Python, i messaggi di autorizzazione possono contenere variazioni del botocore
nome.
Specificare la regione e altre configurazioni
Il CDK CLI deve conoscere la AWS regione in cui si sta distribuendo 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 gli stessi file utilizzati da altri AWS strumenti come AWS CLI and the various AWS SDKs. Il CDK CLI cerca queste informazioni nell'ordine seguente.
-
La variabile di
AWS_DEFAULT_REGION
ambiente. -
Un profilo denominato definito nel AWS
config
file standard e specificato utilizzando l'--profile
opzione suicdk
comandi. -
La
[default]
sezione del AWSconfig
file standard.
Oltre a specificare AWS l'autenticazione e una regione nella [default]
sezione, puoi anche aggiungere una o più [profile
sezioni, dove NAME
]NAME
è il nome del profilo. Per ulteriori informazioni sui profili denominati, vedere File di configurazione e credenziali condivisi nella Guida di riferimento agli strumenti AWS SDKs e agli strumenti.
Il AWS config
file standard si trova in ~/.aws/config
(macOS/Linux) o %USERPROFILE%\.aws\config
(Windows). Per dettagli e posizioni alternative, consulta Posizione dei file di configurazione e credenziali condivisi nella Guida di riferimento di and Tools AWS SDKs
L'ambiente specificato nell' AWS CDK app utilizzando la env
proprietà dello stack viene utilizzato durante la sintesi. Viene utilizzato per generare un AWS CloudFormation modello specifico per l'ambiente e, durante la distribuzione, sostituisce l'account o la regione specificati con uno dei metodi precedenti. Per ulteriori informazioni, consulta Ambienti per AWS CDK.
Nota
AWS CDK Utilizza le credenziali degli stessi file di origine degli altri AWS strumenti e, incluso il. SDKs AWS Command Line Interface Tuttavia, AWS CDK potrebbero comportarsi in modo leggermente diverso rispetto a questi strumenti. Usa la parte AWS SDK for JavaScript inferiore del cofano. Per i dettagli completi sulla configurazione delle credenziali per AWS SDK for JavaScript, vedere Impostazione delle credenziali.
Facoltativamente, è possibile utilizzare l'opzione --role-arn
(or-r
) per specificare il ARN IAM ruolo da utilizzare per la distribuzione. Questo ruolo deve essere assunto dall' AWS account utilizzato.
Specificare il comando dell'app
Molte funzionalità di CDK CLI richiedono la sintesi di uno o più AWS CloudFormation modelli, il che a sua volta richiede l'esecuzione dell'applicazione. 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 AWS CDK progetto. La CDK CLI fornisce un comando appropriato per la creazione di un nuovo progetto concdk init
. Ecco il brano cdk.json
tratto da un nuovo TypeScript progetto, per esempio.
{ "app": "npx ts-node bin/hello-cdk.ts" }
La CDK CLI cerca cdk.json
nella directory di lavoro corrente quando si tenta di eseguire l'app. Per questo motivo, potresti tenere aperta una shell nella directory principale del tuo progetto per l'emissione CDK CLI comandi.
Il CDK CLI 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 CDK codice nella stessa lingua.
Se ti trovi in un'altra directory o desideri eseguire l'app utilizzando un comando diverso da quello incdk.json
, usa l'opzione --app
(or-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 viene sintetizzata.
Specificare gli stack
Molti CDK CLI i comandi (ad esempiocdk deploy
) funzionano sugli stack definiti nell'app. Se l'app contiene solo uno stack, CDK CLI presuppone che tu intenda quello se non specifichi esplicitamente uno stack.
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. Ricorda che l'ID è il valore specificato dal secondo argomento quando crei un'istanza dello stack.
cdk synth PipelineStack LambdaStack
Potete anche usare i caratteri jolly per specificare IDs che corrispondono a un pattern.
-
?
corrisponde a qualsiasi carattere singolo -
*
corrisponde a qualsiasi numero di caratteri (*
da solo corrisponde a tutte le pile) -
**
corrisponde a tutto ciò che è in una gerarchia
Puoi anche usare l'--allopzione per specificare tutti gli stack.
Se la tua app utilizza CDKPipelines, CDK CLI considera i tuoi stack e le tue fasi come una gerarchia. Inoltre, l'--allopzione e la *
jolly corrispondono solo agli stack di primo livello. Per abbinare tutte le pile, usa. **
Utilizzalo anche **
per indicare tutte le pile in una particolare gerarchia.
Quando usate i caratteri jolly, racchiudete il pattern tra virgolette o uscite dai caratteri jolly con. \
Se non lo fate, la vostra shell potrebbe cercare di 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 CDK CLI tiene conto delle dipendenze tra le pile al momento di decidere l'ordine in cui elaborarle. Ad esempio, supponiamo che uno stack utilizzi un valore prodotto da un altro (come quello 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 ambiente AWS
L'implementazione di stack con la CDK richiede il provisioning di AWS CDK risorse speciali dedicate. Il cdk
bootstrap
comando crea le risorse necessarie per te. È necessario eseguire il bootstrap solo se si distribuisce uno stack che richiede queste risorse dedicate. Per informazioni dettagliate, vedi AWS CDK bootstrap.
cdk bootstrap
Se emesso senza argomenti, come illustrato di seguito, il cdk bootstrap
comando sintetizza l'app corrente e avvia gli ambienti in cui verranno distribuiti gli stack. Se l'app contiene stack indipendenti dall'ambiente, che non specificano esplicitamente un ambiente, l'account e la regione predefiniti vengono avviati oppure l'ambiente specificato viene utilizzato. --profile
All'esterno 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 nel tuo 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 (combinazione account/regione) in cui viene distribuito uno stack di questo tipo deve essere avviato separatamente.
È possibile che vengano AWS addebitati costi per ciò che memorizza nelle risorse avviate. AWS CDK Inoltre, se si utilizza-bootstrap-customer-key
, verrà creata una AWS KMS chiave, che comporta anche costi per ambiente.
Nota
Le versioni precedenti del modello bootstrap creavano una KMS chiave per impostazione predefinita. Per evitare addebiti, riavvia il sistema utilizzando. --no-bootstrap-customer-key
Nota
CDK CLI v2 non supporta il modello di bootstrap originale, soprannominato modello legacy, utilizzato di default con v1. CDK
Importante
Il moderno modello bootstrap concede efficacemente le autorizzazioni implicite da 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 avviato. 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, crea una cartella corrispondente, quindi, all'interno della directory, emetticdk init
.
mkdir my-cdk-app cd my-cdk-app cdk init
TEMPLATE
--languageLANGUAGE
Le lingue supportate (LANGUAGE
) sono:
Codice |
Lingua |
---|---|
|
TypeScript |
|
JavaScript |
|
Python |
|
Java |
|
C# |
TEMPLATE
è un modello opzionale. Se il modello desiderato è app, l'impostazione predefinita, puoi ometterlo. I modelli disponibili sono:
Modello |
Descrizione |
---|---|
|
Crea un' AWS CDK app vuota. |
|
Crea un' AWS CDK app con uno stack contenente una SQS coda Amazon e un argomento AmazonSNS. |
I modelli utilizzano il nome della cartella del progetto per generare nomi per file e classi all'interno della nuova app.
Elenca pile
Per visualizzare un elenco IDs degli stack presenti nell' AWS CDK applicazione, inserisci uno dei seguenti comandi equivalenti:
cdk list cdk ls
Se l'applicazione contiene stack CDKPipelines, 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 l'app contiene molti stack, puoi specificare lo stack completo o parziale IDs 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
Il CDK CLI esegue l'app e sintetizza nuovi modelli prima della maggior parte delle operazioni (ad esempio durante la distribuzione o il confronto degli stack). Per impostazione predefinita, questi modelli vengono archiviati 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 trattate nella sezione seguente.
Specificare i valori di contesto
Usa l'-c
opzione --context
o per passare i valori del contesto di runtime alla tua CDK app.
# 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 YAML formato. Aggiungi invece la --json
bandiera per visualizzarla nel JSON formato.
cdk synth --json MyStack
Specificate 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 pile
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
Il CDK CLI esegue la tua app e sintetizza nuovi AWS CloudFormation modelli prima di distribuire qualsiasi cosa. Pertanto, è possibile utilizzare anche la maggior parte delle opzioni della riga di comando con cui è possibile utilizzare cdk synth
(ad esempio--context
). cdk deploy
Vedi tutte cdk deploy --help
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 modificacdk synth, puoi eliminare la fase di sintesi ridondante durante la distribuzione. A tale scopo, specificate la cdk.out
directory 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 distribuzioni siano atomiche. Ciò significa che hanno successo o falliscono nel loro complesso. 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 guasti sono inevitabili e il ripristino delle implementazioni fallite può rallentarvi.
Per questo motivo, CDK CLI consente di disabilitare il rollback aggiungendolo --no-rollback
al cdk deploy
comando. Con questo flag, le distribuzioni fallite non vengono ripristinate. Le risorse distribuite prima della risorsa guasta rimangono invece valide e la distribuzione successiva inizia con la risorsa guasta. Dedicherai molto meno tempo ad aspettare le implementazioni e molto più tempo a sviluppare la tua infrastruttura.
Sostituzione a caldo
Usa il --hotswap
flag con cdk deploy
per cercare di aggiornare direttamente AWS le tue risorse invece di generare un set di AWS CloudFormation modifiche e distribuirlo. La distribuzione passa alla AWS CloudFormation distribuzione se l'hot swap non è possibile.
Attualmente l'hot swapping supporta le funzioni Lambda, le macchine a stati Step Functions e le immagini dei container ECS Amazon. Il --hotswap
flag disabilita anche il rollback (cioè implica). --no-rollback
Importante
L'hot-swapping non è consigliato per le implementazioni di produzione.
Modalità orologio
La CDK CLIla modalità watch (cdk deploy --watcho cdk watch in breve) monitora continuamente i file sorgente e le risorse dell'CDKapp per rilevare eventuali modifiche. Esegue immediatamente una distribuzione degli stack specificati quando viene rilevata una modifica.
Per impostazione predefinita, queste distribuzioni utilizzano il --hotswap
flag, che accelera l'implementazione delle modifiche alle funzioni Lambda. Inoltre, se AWS CloudFormation hai modificato la configurazione dell'infrastruttura, ritorna alla distribuzione completa. Per eseguire cdk watch
sempre AWS CloudFormation distribuzioni complete, aggiungi il --no-hotswap
flag a. cdk watch
Tutte le modifiche apportate mentre cdk watch
è già in esecuzione una distribuzione vengono combinate in un'unica distribuzione, che inizia non appena viene completata la distribuzione in corso.
La modalità di visualizzazione utilizza la "watch"
chiave del progetto cdk.json
per determinare quali file monitorare. Per impostazione predefinita, questi file sono i file e le risorse dell'applicazione, ma possono essere modificati modificando le "exclude"
voci "include"
and 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 watch
esegue il "build"
comando da cdk.json
per creare l'app prima della sintesi. Se la distribuzione richiede comandi per creare o impacchettare il codice Lambda (o qualsiasi altra cosa non presente nell'CDKapp), aggiungila qui.
I caratteri jolly in stile Git, entrambi *
e**
, possono essere usati nei tasti and. "watch"
"build"
Ogni percorso viene interpretato in relazione alla directory principale di. cdk.json
Il valore predefinito di include
è**/*
, ovvero tutti i file e le directory nella directory principale del progetto. exclude
è facoltativo.
Importante
La modalità Watch non è consigliata per le implementazioni di produzione.
Specificare i parametri AWS CloudFormation
Il CDK CLI supporta la specificazione dei AWS CloudFormation parametri al momento della distribuzione. È possibile fornirli nella riga di comando dopo il --parameters
flag.
cdk deploy MyStack --parameters uploadBucketName=UploadBucket
Per definire più parametri, utilizzate più --parameters
flag.
cdk deploy MyStack --parameters uploadBucketName=UpBucket --parameters downloadBucketName=DownBucket
Se state distribuendo più stack, potete 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 vengono specificati in modo esplicito. Utilizzate il --no-previous-parameters
flag per richiedere che tutti i parametri siano specificati.
Specificare 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 JSON formato, usa il flag. --outputs-file
cdk deploy --outputs-file outputs.json MyStack
Approva le modifiche relative alla sicurezza
Per proteggervi da modifiche non intenzionali che influiscono sul vostro livello di sicurezza, CDK CLI richiede all'utente di approvare le modifiche relative alla sicurezza prima di distribuirle. È possibile specificare il livello di modifica che richiede l'approvazione:
cdk deploy --require-approval
LEVEL
LEVEL
può essere uno dei seguenti:
Termine |
Significato |
---|---|
|
L'approvazione non è mai richiesta |
|
Richiede l'approvazione di IAM qualsiasi security-group-related modifica |
|
Richiede l'approvazione quando vengono aggiunte IAM dichiarazioni o regole del traffico; le rimozioni non richiedono l'approvazione |
L'impostazione può essere configurata anche 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 dell'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 determinato AWS CDK stack. Questo è utile se si sta migrando o si stanno AWS CDK spostando risorse tra gli stack o se si sta modificando il relativo ID logico. cdk import
Utilizza CloudFormation le importazioni di risorse. Consulta l'elenco delle risorse che possono essere importate qui.
Per importare una risorsa esistente in uno AWS CDK stack, procedi nel seguente modo:
-
Assicurati che la risorsa non sia attualmente gestita da nessun altro CloudFormation stack. In caso affermativo, imposta innanzitutto la politica di rimozione sullo stack
RemovalPolicy.RETAIN
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 elimini. -
Esegui un comando
cdk diff
per assicurarti che non vi siano modifiche in sospeso allo AWS CDK stack 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 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 attuale della risorsa nella definizione. Per l'esempio del bucket, assicurati di includere AWS KMS chiavi, politiche del ciclo di vita e qualsiasi altra cosa pertinente al 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 nelle definizioni AWS CDK delle risorse in modo da semplificare la distribuzione delle risorse più volte.
-
Esegui
cdk import
.STACKNAME
-
Se i nomi delle risorse non sono presenti nel modello, CLI verrà richiesto di inserire i nomi effettivi delle risorse che si stanno importando. Dopodiché, inizia l'importazione.
-
Quando viene
cdk import
segnalato un esito positivo, la risorsa viene ora gestita da AWS CDK e CloudFormation. Qualsiasi modifica successiva apportata alle proprietà della risorsa nell' AWS CDK app, la configurazione del costrutto verrà applicata alla distribuzione successiva. -
Per confermare che la definizione della risorsa nell' AWS CDK app corrisponda allo stato corrente della risorsa, è possibile avviare un'operazione di rilevamento della CloudFormation deriva.
Questa funzionalità attualmente non supporta l'importazione di risorse in pile annidate.
Configurazione () cdk.json
Valori predefiniti per molti CDK CLI I flag della riga di comando possono essere memorizzati nel cdk.json
file di un progetto o nel .cdk.json
file nella directory utente. Di seguito è riportato un riferimento alfabetico alle impostazioni di configurazione supportate.
Chiave | Note | CDK CLI option |
---|---|---|
app |
Il comando che esegue l'CDKapplicazione. | --app |
assetMetadata |
Sefalse , CDK non aggiunge metadati alle risorse che utilizzano risorse. |
--no-asset-metadata |
bootstrapKmsKeyId |
Sostituisce l'ID della AWS KMS chiave utilizzata per crittografare il bucket di distribuzione di Amazon S3. | --bootstrap-kms-key-id |
build |
Il comando che compila o crea l'applicazione prima della sintesi. CDK Non consentito in. ~/.cdk.json |
--build |
browser |
Il comando per l'avvio di un browser Web per il cdk docs sottocomando. |
--browser |
context |
Per informazioni, consulta I valori di contesto e il AWS CDK. I valori di contesto in un file di configurazione non verranno cancellati da. cdk
context --clear (Il CDK CLI inserisce i valori di contesto memorizzati nella cachecdk.context.json .) |
--context |
debug |
Setrue , CDK CLI emette informazioni più dettagliate utili per il debug. |
--debug |
language |
Il linguaggio da usare per inizializzare nuovi progetti. | --language |
lookups |
Sefalse , non sono consentite ricerche contestuali. La sintesi avrà esito negativo se è necessario eseguire ricerche di contesto. |
--no-lookups |
notices |
Iffalse , sopprime la visualizzazione dei 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 verranno scritti AWS CloudFormation gli output degli stack distribuiti (in formato). JSON | --outputs-file |
pathMetadata |
Sefalse , i metadati CDK del percorso non vengono aggiunti ai modelli sintetizzati. |
--no-path-metadata |
plugin |
JSONarray che specifica i nomi dei pacchetti o i percorsi locali dei pacchetti che estendono il CDK | --plugin |
profile |
Nome del AWS profilo predefinito utilizzato per specificare la regione e le credenziali dell'account. | --profile |
progress |
Se impostato su, "events" CDK CLI visualizza tutti AWS CloudFormation gli eventi durante la distribuzione, anziché una barra di avanzamento. |
--progress |
requireApproval |
Livello di approvazione predefinito per le modifiche di sicurezza. Consulta la sezione Approva le modifiche relative alla sicurezza | --require-approval |
rollback |
Sefalse , le distribuzioni non riuscite non vengono ripristinate. |
--no-rollback |
staging |
Sefalse , le risorse non vengono copiate nella directory di output (utilizzate per il debug locale dei file sorgente con). AWS SAM |
--no-staging |
tags |
JSONoggetto 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 dei container (vedi. Avvia il tuo ambiente AWS | --toolkit-bucket-name |
toolkitStackName |
Il nome dello stack di bootstrap (vedi. Avvia il tuo ambiente AWS | --toolkit-stack-name |
versionReporting |
Sefalse , disattiva la segnalazione delle versioni. |
--no-version-reporting |
watch |
JSONoggetti contenenti "include" e "exclude" chiavi che indicano quali file devono (o non devono) attivare una ricostruzione del progetto quando vengono modificati. Per informazioni, consulta Modalità orologio. |
--watch |