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à.
cdk deploy
Implementa uno o più AWS CDK stack nel tuo ambiente. AWS
Durante la distribuzione, CDK CLI emetterà indicatori di avanzamento, simili a quelli che possono essere osservati dalla AWS CloudFormation console.
Se l' AWS ambiente non è avviato, verranno implementati correttamente solo gli stack senza risorse e con modelli sintetizzati inferiori a 51.200 byte.
Utilizzo
$
cdk deploy
<arguments>
<options>
Argomenti
- CDKID dello stack
-
L'ID di costruzione dello CDK stack dell'app da distribuire.
Tipo: Stringa
Required: No
Opzioni
Per un elenco di opzioni globali che funzionano con tutti CDK CLI comandi, vediOpzioni globali.
--all
BOOLEAN
-
Implementa tutti gli stack nella tua CDK app.
Valore predefinito:
false
--asset-parallelism
BOOLEAN
-
Specificate se creare e pubblicare risorse in parallelo.
--asset-prebuild
BOOLEAN
-
Specificate se creare tutte le risorse prima di distribuire il primo stack. Questa opzione è utile in caso di errore Docker costruisce.
Valore predefinito:
true
--build-exclude, -E
ARRAY
-
Non ricostruite la risorsa con l'ID fornito.
Questa opzione può essere specificata più volte in un unico comando.
Valore predefinito:
[]
--change-set-name
STRING
-
Il nome del set di AWS CloudFormation modifiche da creare.
Questa opzione non è compatibile con
--method='direct'
. --concurrency
NUMBER
-
Implementa più stack in parallelo tenendo conto delle dipendenze tra stack. Utilizza questa opzione per velocizzare le implementazioni. È comunque necessario tenere conto di altri AWS CloudFormation limiti di Account AWS velocità.
Fornisci un numero per specificare il numero massimo di distribuzioni simultanee (in base alla dipendenza) da eseguire.
Valore predefinito:
1
--exclusively, -e
BOOLEAN
-
Implementa solo gli stack richiesti e non include le dipendenze.
--force, -f
BOOLEAN
-
Quando esegui la distribuzione per aggiornare uno stack esistente, CDK CLI confronterà il modello e i tag dello stack distribuito con lo stack che sta per essere distribuito. Se non viene rilevata alcuna modifica, CDK CLI salterà la distribuzione.
Per ignorare questo comportamento e distribuire sempre gli stack, anche se non viene rilevata alcuna modifica, utilizzate questa opzione.
Valore predefinito:
false
--help, -h
BOOLEAN
-
Mostra le informazioni di riferimento relative al comando.
cdk deploy
--hotswap
BOOLEAN
-
Implementazioni Hotswap per uno sviluppo più rapido. Questa opzione tenta di eseguire una distribuzione hotswap più rapida, se possibile. Ad esempio, se modifichi il codice di una funzione Lambda nella tua CDK app, CDK CLI aggiornerà la risorsa direttamente tramite il servizio APIs anziché eseguire una CloudFormation distribuzione.
Se il CDK CLI rileva modifiche che non supportano l'hotswap, tali modifiche verranno ignorate e verrà visualizzato un messaggio. Se preferisci eseguire una CloudFormation distribuzione completa come alternativa, usa invece.
--hotswap-fallback
La CDK CLI utilizza le AWS credenziali correnti per eseguire le API chiamate. Non assume i ruoli del tuo stack di bootstrap, anche se il flag della
@aws-cdk/core:newStyleStackSynthesis
funzionalità è impostato su.true
Questi ruoli non dispongono delle autorizzazioni necessarie per aggiornare le AWS risorse direttamente, senza utilizzarle. CloudFormation Per questo motivo, assicurati che le tue credenziali appartengano allo stesso Account AWS stack su cui esegui le distribuzioni hotswap e che dispongano delle autorizzazioni necessarie per aggiornare le risorse. IAML'hotswapping è attualmente supportato per le seguenti modifiche:
-
Risorse di codice (tra cui Docker immagini e codice in linea), modifiche ai tag e modifiche alla configurazione (sono supportate solo le variabili di descrizione e ambiente) delle funzioni Lambda.
-
Versioni Lambda e modifiche agli alias.
-
Modifiche alla definizione delle macchine a AWS Step Functions stati.
-
Modifiche agli asset dei container dei ECS servizi Amazon.
-
Modifiche agli asset del sito Web delle distribuzioni di bucket Amazon S3.
-
Modifiche all'origine e all'ambiente dei progetti. AWS CodeBuild
-
VTLmodifiche ai modelli di mappatura per AWS AppSync resolver e funzioni.
-
Modifiche allo schema per AWS AppSync GraphQL APIs.
L'utilizzo di determinate funzioni CloudFormation intrinseche è supportato come parte di una distribuzione hotswap. Ciò include:
-
Ref
-
Fn::GetAtt
— Supportato solo parzialmente. Fai riferimento a questa implementazioneper le risorse e gli attributi supportati. -
Fn::ImportValue
-
Fn::Join
-
Fn::Select
-
Fn::Split
-
Fn::Sub
Questa opzione è compatibile anche con gli stack annidati.
Nota
-
Questa opzione introduce deliberatamente la deriva negli CloudFormation stack per velocizzare le distribuzioni. Per questo motivo, usatela solo per scopi di sviluppo. Non utilizzate questa opzione per le vostre implementazioni di produzione.
-
Questa opzione è considerata sperimentale e potrebbe subire cambiamenti epocali in futuro.
-
I valori predefiniti per alcuni parametri possono essere diversi con il parametro hotswap. Ad esempio, la percentuale minima di integrità di un ECS servizio Amazon sarà attualmente fissata a
0
. Se ciò si verifica, esamina la fonte di conseguenza.
Valore predefinito:
false
-
--hotswap-fallback
BOOLEAN
-
Questa opzione è simile a
--hotswap
. La differenza è che, se viene rilevata una modifica che lo richiede,--hotswap-fallback
verrà eseguita una CloudFormation distribuzione completa.Per ulteriori informazioni su questa opzione, consulta
--hotswap
.Valore predefinito:
false
--ignore-no-stacks
BOOLEAN
-
Esegui una distribuzione anche se l'CDKapp non contiene stack.
Questa opzione è utile nel seguente scenario: potresti avere un'app con più ambienti, ad esempio
dev
eprod
. All'inizio dello sviluppo, l'app prod potrebbe non disporre di risorse o le risorse potrebbero essere commentate. Ciò comporterà un errore di distribuzione con un messaggio che indica che l'app non ha stack. Utilizzare--ignore-no-stacks
per aggirare questo errore.Valore predefinito:
false
--logs
BOOLEAN
-
Mostra Amazon CloudWatch Log nello standard output (
stdout
) per tutti gli eventi di tutte le risorse negli stack selezionati.Questa opzione è compatibile solo con
--watch
.Valore predefinito:
true
--method, -m
STRING
-
Configura il metodo per eseguire una distribuzione.
-
change-set
— Metodo predefinito. - Il CDK CLI crea un set di CloudFormation modifiche con le modifiche che verranno distribuite, quindi esegue la distribuzione. -
direct
— Non creare un set di modifiche. Applica invece la modifica immediatamente. Questa operazione è in genere più rapida rispetto alla creazione di un set di modifiche, ma comporta la perdita delle informazioni sullo stato di avanzamento. -
prepare-change-set
— Create un set di modifiche ma non eseguite la distribuzione. Ciò è utile se si dispone di strumenti esterni che esamineranno il set di modifiche o se si dispone di un processo di approvazione per i set di modifiche.
Valori validi:
change-set
,,direct
prepare-change-set
Valore predefinito:
change-set
-
--notification-arns
ARRAY
-
SNSGli argomenti ARNs di Amazon che CloudFormation notificheranno gli eventi relativi allo stack.
--outputs-file, -O
STRING
-
Il percorso in cui vengono scritti gli output dello stack delle distribuzioni.
Dopo la distribuzione, gli output dello stack verranno scritti nel formato del file di output specificato. JSON
Puoi configurare questa opzione nel
cdk.json
file del progetto o~/.cdk.json
sul tuo computer di sviluppo locale:{ "app": "npx ts-node bin/myproject.ts", // ... "outputsFile": "outputs.json" }
Se vengono distribuiti più stack, gli output vengono scritti nello stesso file di output, organizzato da chiavi che rappresentano il nome dello stack.
--parameters
ARRAY
-
Passa parametri aggiuntivi durante la distribuzione. CloudFormation
Questa opzione accetta un array nel seguente formato:
STACK:KEY=VALUE
.-
STACK
— Il nome dello stack a cui associare il parametro. -
KEY
— Il nome del parametro dello stack. -
VALUE
— Il valore da trasmettere al momento della distribuzione.
Se non viene fornito un nome dello stack o se
*
viene fornito come nome dello stack, i parametri verranno applicati a tutti gli stack distribuiti. Se uno stack non utilizza il parametro, la distribuzione avrà esito negativo.I parametri non si propagano agli stack annidati. Per passare i parametri agli stack nidificati, utilizzate il costrutto.
NestedStack
Valore predefinito:
{}
-
--previous-parameters
BOOLEAN
-
Utilizzate i valori precedenti per i parametri esistenti.
Quando questa opzione è impostata su
false
, è necessario specificare tutti i parametri in ogni distribuzione.Valore predefinito:
true
--progress
STRING
-
Configura come CDK CLI mostra lo stato di avanzamento della distribuzione.
-
bar
— Visualizza gli eventi di distribuzione dello stack come barra di avanzamento, con gli eventi per la risorsa attualmente distribuita. -
events
— Fornisci una cronologia completa, inclusi tutti gli CloudFormation eventi.
Puoi anche configurare questa opzione nel
cdk.json
file del progetto o~/.cdk.json
sul tuo computer di sviluppo locale:{ "progress": "events" }
Valori validi:
bar
,events
Valore predefinito:
bar
-
--require-approval
STRING
-
Specificate quali modifiche sensibili alla sicurezza richiedono l'approvazione manuale.
-
any-change
— È richiesta l'approvazione manuale per qualsiasi modifica allo stack. -
broadening
— È richiesta l'approvazione manuale se le modifiche comportano un ampliamento delle autorizzazioni o delle regole del gruppo di sicurezza. -
never
— L'approvazione non è richiesta.
Valori validi:
any-change
,broadening
,never
Valore predefinito:
broadening
-
--rollback
|--no-rollback
,-R
-
Durante la distribuzione, se una risorsa non viene creata o aggiornata, la distribuzione tornerà allo stato stabile più recente prima del CDK CLI restituisce. Tutte le modifiche apportate fino a quel momento verranno annullate. Le risorse create verranno eliminate e gli aggiornamenti apportati verranno ripristinati.
--no-rollback
Specificate di disattivare questo comportamento. Se una risorsa non viene creata o aggiornata, CDK CLI lascerà invariate le modifiche apportate fino a quel momento e le restituirà. Ciò lascerà la distribuzione in uno stato di interruzione e interruzione. Da qui, puoi aggiornare il codice e riprovare a eseguire la distribuzione. Questo può essere utile negli ambienti di sviluppo in cui si eseguono iterazioni rapide.Se una distribuzione eseguita
--no-rollback
non riesce e si decide di eseguire il rollback della distribuzione, è possibile utilizzare ilcdk rollback
comando. Per ulteriori informazioni, consulta cdk rollback.Nota
--no-rollback
In caso contrario, le distribuzioni che causano la sostituzione delle risorse falliranno sempre. È possibile utilizzare questo valore di opzione solo per le distribuzioni che aggiornano o creano nuove risorse.Valore predefinito:
--rollback
--toolkit-stack-name
STRING
-
Il nome dello stack CDK Toolkit esistente.
Per impostazione predefinita,
cdk bootstrap
distribuisce uno stack denominatoCDKToolkit
nell'ambiente specificato. AWS Utilizzate questa opzione per fornire un nome diverso per lo stack di bootstrap.Il CDK CLI utilizza questo valore per verificare la versione dello stack di bootstrap.
--watch
BOOLEAN
-
Osserva continuamente i file di CDK progetto e distribuisci automaticamente gli stack specificati quando vengono rilevate modifiche.
Questa opzione implica di
--hotswap
default.Questa opzione ha un equivalente CDK CLI comando. Per ulteriori informazioni, consulta cdk watch.
Esempi
Distribuisci lo stack denominato MyStackName
$
cdk deploy MyStackName --app='node bin/main.js'
Distribuisci più stack in un'app
Usa cdk list
per elencare i tuoi stack:
$
cdk list
CdkHelloWorldStack CdkStack2 CdkStack3
Per distribuire tutti gli stack, usa l'opzione: --all
$
cdk deploy --all
Per scegliere quali stack distribuire, fornisci i nomi degli stack come argomenti:
$
cdk deploy CdkHelloWorldStack CdkStack3
Distribuisci gli stack di pipeline
cdk list
Utilizzatelo per mostrare i nomi degli stack come percorsi, mostrando dove si trovano nella gerarchia della pipeline:
$
cdk list
PipelineStack PiplelineStack/Prod PipelineStack/Prod/MyService
Usa l'--all
opzione o la jolly *
per distribuire tutti gli stack. Se hai una gerarchia di pile come descritta sopra --all
e *
abbinerai solo le pile del livello più alto. Per abbinare tutte le pile della gerarchia, usa. **
È possibile combinare questi modelli. Quanto segue distribuisce tutti gli stack dello stage: Prod
$
cdk deploy PipelineStack/Prod/**
Passa i parametri al momento della distribuzione
Definisci i parametri nel tuo CDK stack. Di seguito è riportato un esempio che crea un parametro denominato TopicNameParam
per un SNS argomento di Amazon:
new sns.Topic(this, 'TopicParameter', { topicName: new cdk.CfnParameter(this, 'TopicNameParam').value.toString() });
Per fornire un valore di parametroparameterized
, esegui quanto segue:
$
cdk deploy --parameters "MyStackName:TopicNameParam=parameterized"
È possibile sovrascrivere i valori dei parametri utilizzando l'--force
opzione. Di seguito è riportato un esempio di sovrascrittura del nome dell'argomento di una distribuzione precedente:
$
cdk deploy --parameters "MyStackName:TopicNameParam=parameterName" --force
Scrive gli output dello stack in un file dopo la distribuzione
Definisci gli output nel tuo CDK file stack. Di seguito è riportato un esempio che crea un output per una funzione: ARN
const fn = new lambda.Function(this, "fn", { handler: "index.handler", code: lambda.Code.fromInline(`exports.handler = \${handler.toString()}`), runtime: lambda.Runtime.NODEJS_LATEST }); new cdk.CfnOutput(this, 'FunctionArn', { value: fn.functionArn, });
Distribuisci lo stack e scrivi gli output su: outputs.json
$
cdk deploy --outputs-file outputs.json
Di seguito è riportato un esempio di outputs.json
post-implementazione:
{ "MyStack": { "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:MyStack-fn5FF616E3-G632ITHSP5HK" } }
In questo esempio, la chiave FunctionArn
corrisponde all'ID logico dell'CfnOutput
istanza.
Di seguito è riportato un esempio di outputs.json
post-distribuzione quando vengono distribuiti più stack:
{ "MyStack": { "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:MyStack-fn5FF616E3-G632ITHSP5HK" }, "AnotherStack": { "VPCId": "vpc-z0mg270fee16693f" } }
Modifica il metodo di distribuzione
Per una distribuzione più rapida, senza utilizzare set di modifiche, usa--method='direct'
:
$
cdk deploy --method='direct'
Per creare un set di modifiche ma non distribuirlo, usa. --method='prepare-change-set'
Per impostazione predefinita, cdk-deploy-change-set
verrà creato un set di modifiche denominato. Se esiste un set di modifiche precedente con questo nome, verrà sovrascritto. Se non viene rilevata alcuna modifica, viene comunque creato un set di modifiche vuoto.
È inoltre possibile assegnare un nome al set di modifiche. Di seguito è riportato un esempio:
$
cdk deploy --method='prepare-change-set' --change-set-name='MyChangeSetName'