View a markdown version of this page

distribuzione cdk - AWS Kit di sviluppo cloud (AWS CDK) v2

Questo è il AWS Guida per gli sviluppatori di CDK v2. Il vecchio CDK v1 è entrato in manutenzione il 1° giugno 2022 e ha terminato il supporto il 1° giugno 2023.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

distribuzione cdk

Distribuisci uno o più AWS Il CDK si integra nel tuo AWS ambiente.

Durante l'implementazione, la CLI CDK produrrà indicatori di avanzamento, simili a quelli osservabili dal AWS CloudFormation console.

Se AWS l'ambiente non è avviato, verranno implementati correttamente solo gli stack privi di risorse e con modelli sintetizzati inferiori a 51.200 byte.

Utilizzo

$ cdk deploy <arguments> <options>

Arguments (Argomenti)

ID dello stack CDK

L'ID di costruzione dello stack CDK dell'app da distribuire.

▬Tipo: stringa

Obbligatorio: no

Opzioni

Per un elenco di opzioni globali che funzionano con tutti i comandi CLI CDK, vedi Opzioni globali.

--all <BOOLEAN>

Distribuisci tutti gli stack nella tua app CDK.

Valore predefinito: false

--asset-parallelism <BOOLEAN>

Specifica 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 build Docker non 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 singolo comando.

Valore predefinito: []

--change-set-name <STRING>

Il nome di AWS CloudFormation set di modifiche da creare.

Questa opzione non è compatibile con --method='direct'.

--concurrency <NUMBER>

Implementa più stack in parallelo tenendo conto delle dipendenze tra stack. Usa questa opzione per velocizzare le implementazioni. È comunque necessario tenere conto AWS CloudFormation e altro AWS limitazione della tariffa dell'account.

Fornisci un numero per specificare il numero massimo di distribuzioni simultanee (a seconda delle dipendenze) da eseguire.

Valore predefinito: 1

--exclusively, -e <BOOLEAN>

Distribuisci solo gli stack richiesti e non includi le dipendenze.

--express <BOOLEAN>

Implementa utilizzando CloudFormation modalità express. La modalità Express consente implementazioni più rapide tramite CloudFormation segnalando che le operazioni sullo stack sono state completate non appena CloudFormation applica la configurazione delle risorse. Tuttavia, CloudFormation riporta il successo senza attendere che le risorse si stabilizzino. Inoltre, la modalità express non esegue il rollback automaticamente e lascerà gli stack in uno stato di errore se qualcosa va storto. Per abilitare il rollback automatico con la modalità express, includi --rollback contrassegno nella distribuzione della modalità express.

Per ulteriori informazioni, vedere modalità express nel AWS CloudFormation Guida per l'utente.

Nota

La modalità Express non attende la stabilizzazione prima di segnalare l'esito positivo e non esegue il rollback automatico in caso di errore. Non è consigliata la modalità express per le implementazioni di produzione. La modalità Express è destinata alle distribuzioni iterative da eseguire durante lo sviluppo dell'applicazione.

Valore predefinito: false

--force, -f <BOOLEAN>

Quando si esegue la distribuzione per aggiornare uno stack esistente, la CLI CDK confronterà il modello e i tag dello stack distribuito con lo stack che sta per essere distribuito. Se non viene rilevata alcuna modifica, la CLI CDK salterà la distribuzione.

Per ignorare questo comportamento e distribuire sempre gli stack, anche se non viene rilevata alcuna modifica, usa questa opzione.

Valore predefinito: false

--help, -h <BOOLEAN>

Mostra le informazioni di riferimento dei comandi per cdk deploy comando.

--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, la CLI CDK aggiornerà la risorsa direttamente tramite le API di servizio invece di eseguire un CloudFormation distribuzione.

Se la CLI CDK rileva modifiche che non supportano l'hotswap, tali modifiche verranno ignorate e verrà visualizzato un messaggio. Se preferisci eseguire una procedura completa CloudFormation distribuzione come riserva, usa --hotswap-fallback invece.

L'interfaccia a riga di comando del CDK utilizza la tua versione attuale AWS credenziali per eseguire le chiamate API. Non assume i ruoli del tuo stack di bootstrap, anche se @aws-cdk/core:newStyleStackSynthesis il flag di funzionalità è impostato su true. Questi ruoli non dispongono delle autorizzazioni necessarie per l'aggiornamento AWS risorse direttamente, senza utilizzare CloudFormation. Per questo motivo, assicurati che le tue credenziali siano le stesse AWS conto degli stack su cui stai eseguendo implementazioni hotswap e che dispongono delle autorizzazioni IAM necessarie per aggiornare le risorse.

L'hotswapping è attualmente supportato per le seguenti modifiche:

  • Risorse di codice (incluse immagini Docker e codice in linea), modifiche ai tag e modifiche alla configurazione (sono supportate solo la descrizione e le variabili di ambiente) delle funzioni Lambda.

  • Versioni Lambda e modifiche agli alias.

  • Modifiche alla definizione di AWS Macchine a stati Step Functions.

  • Container: modifiche agli asset dei servizi Amazon ECS.

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

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

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

  • Modifiche allo schema per AWS AppSync API GraphQL.

  • API REST, distribuzione e modifiche ai metodi per Amazon API Gateway.

  • Modifiche alle API e all'integrazione per Amazon API Gateway V2.

  • Modifiche alla configurazione degli agenti Amazon Bedrock.

  • Modifiche alla configurazione di Amazon Bedrock AgentCore Runtime

  • Modifiche alle regole per Amazon EventBridge.

  • Modifiche alla configurazione delle tabelle Amazon DynamoDB e delle tabelle globali.

  • Modifiche alla configurazione delle code Amazon SQS.

  • Modifiche all'allarme, all'allarme composito e al pannello di controllo per Amazon CloudWatch.

Utilizzo di alcuni CloudFormation le funzioni intrinseche sono supportate come parte di una distribuzione hotswapped. Ciò include:

  • Ref

  • Fn::GetAtt — Supportato solo parzialmente, utilizza una combinazione di API Cloud Control e implementazioni personalizzate. Consulta l'elenco delle risorse supportate da API Cloud Control e questa implementazione per l'elenco completo delle risorse supportate.

  • 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 in CloudFormation si accumula per velocizzare le implementazioni. Per questo motivo, utilizzalo solo per scopi di sviluppo. Non utilizzate questa opzione per le distribuzioni di produzione.

  • Le impostazioni predefinite per alcuni parametri possono essere diverse con il parametro hotswap. Ad esempio, la percentuale minima di integrità di un servizio Amazon ECS sarà attualmente impostata su 0. In tal caso, rivedi la fonte di conseguenza.

  • Quando si esegue un CloudFormation distribuzione dopo le distribuzioni hotswap, utilizzare cdk deploy --revert-drift da implementare con un set di modifiche compatibile con la deriva e riconciliare qualsiasi deriva introdotta dall'hotswapping.

Valore predefinito: false

--hotswap-fallback <BOOLEAN>

Questa opzione è simile a --hotswap. La differenza è che --hotswap-fallback ricorrerà per eseguire un CloudFormation distribuzione se viene rilevata una modifica che la richiede.

Per ulteriori informazioni su questa opzione, consulta --hotswap.

Valore predefinito: false

--ignore-no-stacks <BOOLEAN>

Esegui una distribuzione anche se la tua app CDK non contiene stack.

Questa opzione è utile nel seguente scenario: potresti avere un'app con più ambienti, ad esempio dev e prod. All'avvio dello sviluppo, l'app prod potrebbe non disporre di risorse oppure le risorse potrebbero essere commentate. Ciò comporterà un errore di distribuzione con un messaggio che indica che l'app non ha stack. Usa --ignore-no-stacks per aggirare questo errore.

Valore predefinito: false

--import-existing-resources <BOOLEAN>

Importazione esistente, non gestita AWS CloudFormation risorse dal tuo AWS account.

Quando si utilizza questa opzione, le risorse sintetizzate AWS CloudFormation il modello con lo stesso nome personalizzato delle risorse non gestite esistenti nello stesso account verrà importato nello stack.

Puoi usare questa opzione per importare risorse esistenti in stack nuovi o esistenti.

È possibile importare risorse esistenti e distribuire nuove risorse negli stessi cdk deploy comando.

Per saperne di più sui nomi personalizzati, vedi Tipo di nome nel AWS CloudFormation Guida per l'utente.

Per saperne di più su ImportExistingResources CloudFormation parametro, vedere AWS CloudFormation semplifica l'importazione delle risorse con un nuovo parametro per ChangeSets.

Per ulteriori informazioni sull'utilizzo di questa opzione, vedere Importa risorse esistenti nel aws-cdk-cli GitHub magazzino.

--logs <BOOLEAN>

Mostra Amazon CloudWatch accedi allo standard output (stdout) per tutti gli eventi provenienti da tutte le risorse negli stack selezionati.

Questa opzione è compatibile solo con --watch.

Valore predefinito: true

--method, -m <STRING>

Configurare il metodo per eseguire una distribuzione.

  • change-set — Metodo predefinito. La CLI CDK crea un CloudFormation set di modifiche con le modifiche che verranno implementate, quindi esegue la distribuzione.

  • direct — Non creare un set di modifiche. Applica invece immediatamente la modifica. Questa operazione è in genere più rapida rispetto alla creazione di un set di modifiche, ma i dettagli sullo stato di avanzamento della distribuzione vengono persi nell'output della CLI.

  • prepare-change-set — Crea un set di modifiche ma non esegui la distribuzione. Ciò è utile se disponi di strumenti esterni che ispezionano il set di modifiche o se disponi di un processo di approvazione per i set di modifiche. Usare execute-change-set per eseguire il set di modifiche preparato.

  • execute-change-set — Eseguire un set di modifiche precedentemente creato con prepare-change-set. Il nome predefinito del set di modifiche è cdk-deploy-change-setoppure puoi specificare un nome personalizzato con --change-set-name.

Valori validi: change-set, direct, execute-change-set, prepare-change-set

Valore predefinito: change-set

--monitoring-time-minutes <NUMBER>

Il numero di minuti che CloudFormation continua a monitorare gli allarmi di attivazione del rollback al termine della distribuzione, prima di ripulire le vecchie risorse. Il valore deve essere un numero intero compreso tra 0 e 180.

È necessario utilizzare questa opzione insieme a --rollback-trigger-alarm-arns .

Valore predefinito: 0 (CloudFormation monitora gli allarmi solo mentre l'implementazione è in corso)

--notification-arns <ARRAY>

Gli ARN di Amazon SNS sono argomenti che CloudFormation notificherà 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 progetto cdk.json file o in ~/.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 per chiavi che rappresentano il nome dello stack.

--parameters <ARRAY>

Passa parametri aggiuntivi a CloudFormation durante la distribuzione.

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 di 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 annidati, usa NestedStack costruire.

Valore predefinito: {}

--previous-parameters <BOOLEAN>

Usa 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 il modo in cui la CLI CDK mostra l'avanzamento della distribuzione.

  • bar — Visualizza gli eventi di distribuzione dello stack come barra di avanzamento, con gli eventi relativi alla risorsa attualmente in fase di distribuzione.

  • events — Fornisci una cronologia completa, inclusi tutti CloudFormation eventi.

Puoi anche configurare questa opzione nel progetto cdk.json file o in ~/.cdk.json sul tuo computer di sviluppo locale:

{ "progress": "events" }

Valori validi: bar, events

Valore predefinito: bar

--require-approval <STRING>

Specifica quali modifiche 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

--revert-drift

Utilizza un set di modifiche compatibile con la deriva per la distribuzione. Questo crea un set di modifiche con CloudFormationè REVERT_DRIFT modalità di distribuzione, che rileva le risorse che si sono allontanate dalle definizioni dei modelli a causa di modifiche fuori banda e le riporta allo stato desiderato definito nel modello.

Vedi Documentazione di Cloudformation sui changeset compatibili con Drift per ulteriori informazioni su come funzionano.

Valore predefinito: false

--rollback | --no-rollback, -R

Durante la distribuzione, se una risorsa non viene creata o aggiornata, la distribuzione tornerà all'ultimo stato stabile prima che la CLI CDK ritorni. Tutte le modifiche apportate fino a quel momento verranno annullate. Le risorse create verranno eliminate e gli aggiornamenti effettuati verranno annullati.

Specifica --no-rollback per disattivare questo comportamento. Se una risorsa non viene creata o aggiornata, la CLI del CDK lascerà le modifiche apportate fino a quel momento e le restituirà. Ciò lascerà la distribuzione in uno stato di interruzione e non riuscita. Da qui, puoi aggiornare il codice e riprovare la distribuzione. Ciò può essere utile negli ambienti di sviluppo in cui si esegue un'iterazione rapida.

Se una distribuzione è stata eseguita con --no-rollback non riesce e si decide di ripristinare la distribuzione, è possibile utilizzare cdk rollback comando. Per ulteriori informazioni, vedere cdk rollback.

Nota

Con --no-rollback, le implementazioni 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

--rollback-trigger-alarm-arns <ARRAY>

Gli ARN di CloudWatch allarma che CloudFormation monitora durante l'implementazione. Se uno di questi allarmi passa al ALARM stato, CloudFormation ripristina la distribuzione. È possibile specificare un massimo di 5 allarmi. Gli allarmi vengono trattati come allarmi metrici (AWS::CloudWatch::Alarm).

Questa opzione può essere specificata più volte in un unico comando.

Per cancellare tutti i trigger di rollback precedentemente configurati nello stack, passate il singolo valore none.

Per controllare per quanto tempo CloudFormation continua a monitorare questi allarmi dopo il completamento della distribuzione, usa --monitoring-time-minutes .

--toolkit-stack-name <STRING>

Il nome dello stack CDK Toolkit esistente.

Per impostazione predefinita, cdk bootstrap distribuisce uno stack denominato CDKToolkit nel specificato AWS ambiente. Usa questa opzione per fornire un nome diverso per il tuo stack di bootstrap.

La CLI CDK utilizza questo valore per verificare la versione dello stack di bootstrap.

--watch <BOOLEAN>

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

Questa opzione implica --hotswap per impostazione predefinita.

Questa opzione ha un comando CDK CLI equivalente. Per ulteriori informazioni, vedere orologio cdk.

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 --all opzione:

$ cdk deploy --all

Per scegliere quali stack distribuire, fornisci i nomi degli stack come argomenti:

$ cdk deploy CdkHelloWorldStack CdkStack3

Distribuisci stack di pipeline

Usa cdk list 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 il --all opzione o la jolly * per distribuire tutti gli stack. Se hai una gerarchia di stack come descritto sopra, --all e * corrisponderà solo alle pile del livello superiore. Per abbinare tutte le pile della gerarchia, usa **.

È possibile combinare questi modelli. Di seguito vengono distribuiti tutti gli stack in Prod fase:

$ cdk deploy PipelineStack/Prod/**

Passa i parametri al momento dell'implementazione

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 di parameterized, esegui quanto segue:

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

È possibile sovrascrivere i valori dei parametri utilizzando --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 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 dopo la distribuzione:

{ "MyStack": { "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:MyStack-fn5FF616E3-G632ITHSP5HK" } }

Da questo esempio, la chiave FunctionArn corrisponde all'ID logico di CfnOutput istanza.

Di seguito è riportato un esempio di outputs.json dopo la distribuzione quando vengono distribuiti più stack:

{ "MyStack": { "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:MyStack-fn5FF616E3-G632ITHSP5HK" }, "AnotherStack": { "VPCId": "vpc-z0mg270fee16693f" } }

Modificare 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, un set di modifiche denominato cdk-deploy-change-set verrà creato. 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.

Puoi anche assegnare un nome al set di modifiche. Di seguito è riportato un esempio:

$ cdk deploy --method='prepare-change-set' --change-set-name='MyChangeSetName'