Configurazione delle azioni programmatiche di CDK Toolkit - AWS Cloud Development Kit (AWS CDK) v2

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à.

Configurazione delle azioni programmatiche di CDK Toolkit

La AWS CDK Toolkit Library fornisce interfacce programmatiche per le azioni del ciclo di vita delle applicazioni come la sintesi, l'implementazione e la gestione dello stack. Questa guida spiega come utilizzare ogni azione del codice.

Generazione di assemblaggi cloud con synth

L'synthazione genera un assemblaggio cloud dalla fonte dell'assemblaggio cloud. Per ulteriori informazioni sulla sintesi, consulta Configurare ed eseguire la sintesi dello stack CDK. Un assemblaggio cloud contiene i seguenti elementi di distribuzione dall'app CDK:

  • AWS CloudFormation modelli che definiscono la tua infrastruttura.

  • Risorse come il codice della funzione Lambda o le immagini Docker.

  • Metadati e configurazione di distribuzione.

Ecco come utilizzare l'synthazione per creare un assembly cloud:

// Create a toolkit instance const toolkit = new Toolkit(); // Create a cloud assembly source from a TypeScript app const cloudAssemblySource = await toolkit.fromCdkApp("ts-node app.ts"); // Generate a cloud assembly const cloudAssembly = await toolkit.synth(cloudAssemblySource); // Use the cloud assembly for operations await toolkit.list(cloudAssembly); await toolkit.deploy(cloudAssembly); await toolkit.diff(cloudAssembly); // Query information from the cloud assembly const template = cloudAssembly.getStack("my-stack").template;
Suggerimento

L'utilizzo di un assemblaggio cloud può ottimizzare le prestazioni quando è necessario eseguire più operazioni, poiché la sintesi avviene una sola volta. Per ulteriori informazioni sulla gestione degli assembly cloud, inclusi la memorizzazione nella cache e lo smaltimento, consulta Creare e gestire gli assembly cloud.

Visualizzazione delle informazioni sullo stack con elenco

L'listazione recupera le informazioni sugli stack nell'applicazione CDK, comprese le loro dipendenze e lo stato attuale. Utilizzate questa azione per ispezionare l'infrastruttura prima dell'implementazione o per generare report.

import { StackSelectionStrategy } from '@aws-cdk/toolkit-lib'; // Get information about specific stacks const stackDetails = await toolkit.list(cloudAssemblySource, { stacks: { strategy: StackSelectionStrategy.PATTERN_MUST_MATCH, patterns: ["my-stack"], // Only include stacks matching this pattern } }); // Process the returned stack information for (const stack of stackDetails) { console.log(`Stack: ${stack.id}, Dependencies: ${stack.dependencies}`); }

Fornitura dell'infrastruttura con distribuzione

L'deployazione prevede o aggiorna l'infrastruttura AWS utilizzando l'assemblaggio cloud prodotto durante la sintesi. Per un'introduzione alla distribuzione, consulta Distribuire applicazioni AWS CDK. È possibile controllare le opzioni di distribuzione come la selezione dello stack, i valori dei parametri e il comportamento di rollback.

// Deploy stacks with parameter values await toolkit.deploy(cloudAssemblySource, { parameters: StackParameters.exactly({ "MyStack": { "BucketName": "amzn-s3-demo-bucket" } }) });

L'azione deploy supporta diversi metodi di distribuzione per adattarsi a vari flussi di lavoro. Per la maggior parte degli scenari, specialmente negli ambienti di produzione, consigliamo di utilizzare il metodo di distribuzione predefinito che utilizza set di CloudFormation modifiche. Per gli ambienti di sviluppo in cui la velocità di iterazione è importante, è possibile utilizzare metodi alternativi come l'hotswap.

import { StackSelectionStrategy } from '@aws-cdk/toolkit-lib'; // Deploy using default deployment method (recommended for production) await toolkit.deploy(cloudAssemblySource, { parameters: StackParameters.exactly({ "MyStack": { "BucketName": "amzn-s3-demo-bucket" } }) }); // For development environments only: Deploy with hotswap for faster iterations // Note: We recommend using default deployment methods for production environments await toolkit.deploy(cloudAssemblySource, { deploymentMethod: { method: "hotswap", fallback: true }, // Faster but introduces drift stacks: { strategy: StackSelectionStrategy.PATTERN_MUST_MATCH, patterns: ["dev-stack"] } });

Ripristino delle distribuzioni non riuscite con il rollback

L'rollbackazione riporta uno stack all'ultimo stato stabile quando una distribuzione fallisce e non può essere annullata automaticamente. Utilizzare questa azione per eseguire il ripristino da installazioni non riuscite che richiedono un intervento manuale.

import { StackSelectionStrategy } from '@aws-cdk/toolkit-lib'; // Roll back stacks to their last stable state await toolkit.rollback(cloudAssemblySource, { orphanFailedResources: false, // When true, removes failed resources from CloudFormation management stacks: { strategy: StackSelectionStrategy.PATTERN_MUST_MATCH, patterns: ["failed-stack"] } });

Monitoraggio delle modifiche con watch

L'watchazione monitora continuamente l'app CDK per rilevare eventuali modifiche ai file locali ed esegue automaticamente distribuzioni o hotswap. Questo crea un file watcher che funziona fino alla chiusura o alla chiusura del codice.

avvertimento

Le implementazioni Hotswap aggiornano le risorse direttamente senza interruzioni CloudFormation quando possibile, velocizzando gli aggiornamenti durante lo sviluppo. Questa opzione è abilitata per impostazione predefinita per il comando. watch Se da un lato ciò accelera il ciclo di sviluppo, dall'altro introduce un divario tra i CloudFormation modelli e le risorse distribuite. Pertanto, si consiglia di non utilizzare gli hotswap negli ambienti di produzione.

import { StackSelectionStrategy } from '@aws-cdk/toolkit-lib'; // Start watching for changes const watcher = await toolkit.watch(cloudAssemblySource, { include: ["lib/**/*.ts"], // Only watch TypeScript files in the lib directory exclude: ["**/*.test.ts"], // Ignore test files deploymentMethod: { method: "hotswap" }, // This is the default, shown here for clarity stacks: { strategy: StackSelectionStrategy.ALL // Watch all stacks } }); // Later in your code, you can explicitly stop watching: // await watcher.dispose();

La funzione watch restituisce un IWatcher oggetto che consente di controllare in modo esplicito quando smettere di guardare. Chiamate il dispose() metodo su questo oggetto quando volete terminare il processo di controllo.

Rimuovere l'infrastruttura con destroy

L'destroyazione rimuove gli stack CDK e le risorse associate da. AWS Utilizzate questa azione per ripulire le risorse quando non sono più necessarie.

Importante

L'azione destroy rimuove definitivamente le risorse senza richiedere conferma, a differenza della versione CLI di questo comando. Assicurati di avere dei backup di tutti i dati importanti prima di distruggere gli stack.

import { StackSelectionStrategy } from '@aws-cdk/toolkit-lib'; // Remove specific stacks and their resources await toolkit.destroy(cloudAssemblySource, { stacks: { strategy: StackSelectionStrategy.PATTERN_MUST_MATCH, patterns: ["dev-stack"], // Only destroy stacks matching this pattern } });