cdk deploy - AWS Cloud Development Kit (AWS CDK) v2

Questa è la guida per sviluppatori AWS 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à.

cdk deploy

Implementa uno o più AWS CDK stack nel tuo ambiente. AWS

Durante l'implementazione, il CDK CLI emetterà indicatori di avanzamento, simili a quelli che possono essere osservati dalla console. AWS CloudFormation

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

ID logico dello stack CDK

L'ID logico dello stack CDK dell'app da distribuire.

Tipo: stringa

Required: No

Opzioni

Per un elenco di opzioni globali che funzionano con tutti i comandi CDKCLI, consulta. Opzioni globali

--all BOOLEAN

Implementa tutti gli stack nella tua app CDK.

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 per le compilazioni non Docker riuscite.

Valore predefinito: true

--build-exclude, -E ARRAY

Non ricostruite l'asset con l'ID specificato.

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, il 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, il CDK salterà la distribuzione. CLI

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 app CDK, il CDK CLI aggiornerà la risorsa direttamente tramite le API del servizio anziché eseguire una distribuzione. CloudFormation

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

Il CDK CLI utilizza le tue AWS credenziali correnti per eseguire le chiamate API. Non assume i ruoli del vostro 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 IAM necessarie per aggiornare le risorse.

L'hotswapping è attualmente supportato per le seguenti modifiche:

  • Risorse di codice (incluse Docker immagini e codice in linea), modifiche ai tag e modifiche alla configurazione (sono supportate solo le variabili di descrizione e di 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 servizi Amazon ECS.

  • Modifiche agli asset del sito Web delle distribuzioni di bucket Amazon S3.

  • Modifiche all'origine e all'ambiente dei progetti. AWS CodeBuild

  • Modifiche al modello di mappatura VTL per AWS AppSync resolver e funzioni.

  • Modifiche allo schema per le API. AWS AppSync GraphQL

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 implementazione per 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 servizio Amazon ECS sarà attualmente fissata a0. 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'app CDK non contiene pile.

Questa opzione è utile nel seguente scenario: potresti avere un'app con più ambienti, come dev e. prod 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

Gli ARN di Amazon SNS sono gli argomenti CloudFormation che 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 file di output specificato in formato 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 sufalse, è necessario specificare tutti i parametri in ogni distribuzione.

Valore predefinito: true

--progress STRING

Configura il modo in cui il CDK CLI visualizza l'avanzamento della distribuzione.

  • bar— Visualizza gli eventi di distribuzione dello stack come barra di avanzamento, con gli eventi relativi alla 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-changebroadening, never

Valore predefinito: broadening

--rollback BOOLEAN

Durante la distribuzione, se una risorsa non viene creata o aggiornata, la distribuzione tornerà allo stato stabile più recente prima del ripristino del CDKCLI. Tutte le modifiche apportate fino a quel momento verranno annullate. Le risorse create verranno eliminate e gli aggiornamenti apportati verranno ripristinati.

falseSpecificare di disattivare questo comportamento. Se una risorsa non viene creata o aggiornata, il CDK CLI lascerà invariate le modifiche apportate fino a quel momento e le restituirà. Questo può essere utile negli ambienti di sviluppo in cui si esegue un'iterazione rapida.

Perché--rollback=false, puoi usare --no-rollback o-R.

Nota

Quandofalse, 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: true

--toolkit-stack-name STRING

Il nome dello stack CDK Toolkit esistente.

Questa opzione viene utilizzata solo per le app CDK che utilizzano la sintesi precedente.

--watch BOOLEAN

Osserva continuamente i file di progetto CDK e distribuisci automaticamente gli stack specificati quando vengono rilevate modifiche.

Questa opzione implica --hotswap di default.

Questa opzione ha un CLI comando CDK equivalente. 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 listUtilizzatelo 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'--allopzione 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 stack CDK. Di seguito è riportato un esempio che crea un parametro denominato TopicNameParam per un argomento di Amazon SNS:

new sns.Topic(this, 'TopicParameter', { topicName: new cdk.CfnParameter(this, 'TopicNameParam').value.toString() });

Per fornire un valore di parametro pari aparameterized, esegui quanto segue:

$ cdk deploy --parameters "MyStackName:TopicNameParam=parameterized"

È possibile sovrascrivere i valori dei parametri utilizzando l'--forceopzione. 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 file stack CDK. 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'CfnOutputistanza.

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'