Configurando ações programáticas do CDK Toolkit - AWS Kit de desenvolvimento em nuvem (AWS CDK) v2

Este é o Guia do desenvolvedor do AWS CDK v2. O CDK v1 antigo entrou em manutenção em 1º de junho de 2022 e encerrou o suporte em 1º de junho de 2023.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurando ações programáticas do CDK Toolkit

A AWS CDK Toolkit Library fornece interfaces programáticas para ações do ciclo de vida do aplicativo, como síntese, implantação e gerenciamento de pilhas. Este guia explica como usar cada ação em seu código.

Gerando montagens em nuvem com sintetizador

A synth ação gera uma montagem em nuvem a partir de sua fonte de montagem em nuvem. Para obter mais informações sobre síntese, consulte Configurar e realizar a síntese de pilhas CDK. Um conjunto de nuvem contém os seguintes artefatos de implantação do seu aplicativo CDK:

  • AWS CloudFormation modelos que definem sua infraestrutura.

  • Ativos como código de função Lambda ou imagens do Docker.

  • Metadados e configuração de implantação.

Veja como usar a synth ação para criar uma montagem em nuvem:

// 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;
dica

Usar uma montagem em nuvem pode otimizar o desempenho quando você precisa realizar várias operações, já que a síntese só acontece uma vez. Para obter mais informações sobre o gerenciamento de montagens em nuvem, incluindo armazenamento em cache e descarte, consulte Criar e gerenciar montagens em nuvem.

Visualizando informações da pilha com a lista

A list ação recupera informações sobre as pilhas em seu aplicativo CDK, incluindo suas dependências e status atual. Use essa ação para inspecionar sua infraestrutura antes da implantação ou para gerar relatórios.

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}`); }

Infraestrutura de provisionamento com implantação

A deploy ação provisiona ou atualiza sua infraestrutura AWS usando a montagem em nuvem produzida durante a síntese. Para uma introdução à implantação, consulte Implantar aplicativos AWS CDK. Você pode controlar as opções de implantação, como seleção de pilha, valores de parâmetros e comportamento de reversão.

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

A ação de implantação oferece suporte a diferentes métodos de implantação para acomodar vários fluxos de trabalho. Para a maioria dos cenários, especialmente em ambientes de produção, recomendamos usar o método de implantação padrão que usa conjuntos de CloudFormation alterações. Para ambientes de desenvolvimento em que a velocidade de iteração é importante, você pode usar métodos alternativos, como o 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"] } });

Revertendo implantações com falha com reversão

A rollback ação retorna uma pilha ao seu último estado estável quando uma implantação falha e não pode ser revertida automaticamente. Use essa ação para se recuperar de implantações com falha que exigem intervenção 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"] } });

Monitorando mudanças com o relógio

A watch ação monitora continuamente seu aplicativo CDK em busca de alterações de arquivos locais e executa automaticamente implantações ou hotswaps. Isso cria um observador de arquivos que é executado até que seu código saia ou seja encerrado.

Atenção

As implantações do Hotswap atualizam os recursos diretamente, sem precisar passar por elas, CloudFormation quando possível, tornando as atualizações mais rápidas durante o desenvolvimento. Isso é ativado por padrão para o watch comando. Embora isso acelere o ciclo de desenvolvimento, ele introduz uma variação entre seus CloudFormation modelos e recursos implantados. Portanto, recomendamos que você não use hotswaps em ambientes de produção.

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();

A função watch retorna um IWatcher objeto que permite controlar explicitamente quando parar de assistir. Chame o dispose() método nesse objeto quando quiser finalizar o processo de observação.

Removendo a infraestrutura com a destruição

A destroy ação remove as pilhas de CDK e seus recursos associados do. AWS Use essa ação para limpar os recursos quando eles não forem mais necessários.

Importante

A ação de destruição remove recursos permanentemente sem solicitar confirmação, ao contrário da versão CLI desse comando. Certifique-se de ter backups de todos os dados importantes antes de destruir as pilhas.

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 } });