Esta es la guía para desarrolladores de AWS CDK v2. La primera versión del CDK pasó a la etapa de mantenimiento el 1.° de junio de 2022 y no cuenta con soporte desde el 1.° de junio de 2023.
Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Configuración de las acciones programáticas de CDK Toolkit
La biblioteca del kit de herramientas AWS CDK proporciona interfaces programáticas para las acciones del ciclo de vida de las aplicaciones, como la síntesis, el despliegue y la administración de pilas. En esta guía, se explica cómo utilizar cada acción del código.
Generación de ensamblajes en la nube con sintetizadores
La synth
acción genera un ensamblaje de nube a partir de su fuente de ensamblaje de nube. Para obtener más información sobre la síntesis, consulte Configurar y realizar la síntesis de pilas de CDK. Un ensamblaje de nube contiene los siguientes artefactos de implementación de su aplicación de CDK:
-
AWS CloudFormation plantillas que definen su infraestructura.
-
Activos como el código de función Lambda o las imágenes de Docker.
-
Configuración y metadatos de despliegue.
A continuación, se explica cómo utilizar la synth
acción para crear un ensamblaje en la nube:
// 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;
sugerencia
El uso de un ensamblaje en la nube puede optimizar el rendimiento cuando se necesitan realizar varias operaciones, ya que la síntesis solo se produce una vez. Para obtener más información sobre la administración de los ensamblados en la nube, incluidos el almacenamiento en caché y la eliminación, consulte Crear y administrar los ensamblajes en la nube.
Visualización de la información de la pila con una lista
La list
acción recupera información sobre las pilas de la aplicación CDK, incluidas sus dependencias y su estado actual. Utilice esta acción para inspeccionar la infraestructura antes de la implementación o para generar informes.
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}`); }
Aprovisionamiento de la infraestructura con despliegue
La deploy
acción aprovisiona o actualiza su infraestructura al AWS utilizar el ensamblaje de nube creado durante la síntesis. Para obtener una introducción a la implementación, consulte Implementación de aplicaciones de AWS CDK. Puede controlar las opciones de despliegue, como la selección de pilas, los valores de los parámetros y el comportamiento de reversión.
// Deploy stacks with parameter values await toolkit.deploy(cloudAssemblySource, { parameters: StackParameters.exactly({ "MyStack": { "BucketName": "amzn-s3-demo-bucket" } }) });
La acción de despliegue admite distintos métodos de despliegue para adaptarse a distintos flujos de trabajo. Para la mayoría de los escenarios, especialmente en entornos de producción, recomendamos utilizar el método de despliegue predeterminado, que utiliza conjuntos de CloudFormation cambios. Para los entornos de desarrollo en los que la velocidad de iteración es importante, puede utilizar métodos alternativos, como el 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"] } });
Revertir las implementaciones fallidas mediante la reversión
La rollback
acción devuelve una pila a su último estado estable cuando se produce un error en una implementación y no se puede revertir automáticamente. Utilice esta acción para recuperarse de implementaciones fallidas que requieran una intervención manual.
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"] } });
Supervise los cambios con un reloj
La watch
acción monitorea continuamente tu aplicación CDK para detectar cambios en los archivos locales y realiza despliegues o intercambios en caliente de forma automática. De este modo, se crea un detector de archivos que se ejecuta hasta que el código se cierra o se cierra.
aviso
CloudFormation Cuando es posible, las implementaciones de Hotswap actualizan los recursos directamente sin necesidad de realizarlos, lo que agiliza las actualizaciones durante el desarrollo. Esta opción está habilitada de forma predeterminada para el watch
comando. Si bien esto acelera el ciclo de desarrollo, introduce diferencias entre las CloudFormation plantillas y los recursos desplegados. Por lo tanto, le recomendamos que no utilice hotswaps en entornos de producción.
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 función de reloj devuelve un IWatcher
objeto que le permite controlar de forma explícita cuándo dejar de mirar. Llama al dispose()
método de este objeto cuando quieras finalizar el proceso de visualización.
Eliminar la infraestructura con destrucción
La destroy
acción elimina las pilas de CDK y sus recursos asociados. AWS Utilice esta acción para limpiar los recursos cuando ya no los necesite.
importante
La acción de destrucción elimina permanentemente los recursos sin solicitar confirmación, a diferencia de la versión CLI de este comando. Asegúrese de tener copias de seguridad de todos los datos importantes antes de destruir las pilas.
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 } });