Mengkonfigurasi tindakan terprogram CDK Toolkit - AWS Cloud Development Kit (AWS CDK) v2

Ini adalah Panduan Pengembang AWS CDK v2. CDK v1 yang lebih lama memasuki pemeliharaan pada 1 Juni 2022 dan mengakhiri dukungan pada 1 Juni 2023.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengkonfigurasi tindakan terprogram CDK Toolkit

Perpustakaan Toolkit AWS CDK menyediakan antarmuka terprogram untuk tindakan siklus hidup aplikasi seperti sintesis, penerapan, dan manajemen tumpukan. Panduan ini menjelaskan cara menggunakan setiap tindakan dalam kode Anda.

Menghasilkan rakitan cloud dengan synth

synthTindakan ini menghasilkan rakitan cloud dari sumber perakitan cloud Anda. Untuk informasi selengkapnya tentang sintesis, lihat Mengkonfigurasi dan melakukan sintesis tumpukan CDK. Rakitan cloud berisi artefak penerapan berikut dari aplikasi CDK Anda:

  • AWS CloudFormation template yang menentukan infrastruktur Anda.

  • Aset seperti kode fungsi Lambda atau gambar Docker.

  • Metadata dan konfigurasi penyebaran.

Berikut cara menggunakan synth tindakan untuk membuat perakitan 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;
Tip

Menggunakan perakitan cloud dapat mengoptimalkan kinerja saat Anda perlu melakukan beberapa operasi, karena sintesis hanya terjadi sekali. Untuk informasi selengkapnya tentang mengelola rakitan cloud, termasuk caching dan pembuangan, lihat Membuat dan mengelola rakitan cloud.

Melihat informasi tumpukan dengan daftar

listTindakan ini mengambil informasi tentang tumpukan di aplikasi CDK Anda, termasuk dependensi dan statusnya saat ini. Gunakan tindakan ini untuk memeriksa infrastruktur Anda sebelum penerapan atau untuk menghasilkan laporan.

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

Penyediaan infrastruktur dengan deploy

deployTindakan tersebut menyediakan atau memperbarui infrastruktur Anda dalam AWS menggunakan perakitan cloud yang dihasilkan selama sintesis. Untuk pengenalan penerapan, lihat Menerapkan aplikasi AWS CDK. Anda dapat mengontrol opsi penerapan seperti pemilihan tumpukan, nilai parameter, dan perilaku rollback.

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

Tindakan penerapan mendukung metode penerapan yang berbeda untuk mengakomodasi berbagai alur kerja. Untuk sebagian besar skenario, terutama di lingkungan produksi, sebaiknya gunakan metode penerapan default yang menggunakan set CloudFormation perubahan. Untuk lingkungan pengembangan di mana kecepatan iterasi penting, Anda dapat menggunakan metode alternatif seperti 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"] } });

Mengembalikan penerapan yang gagal dengan rollback

rollbackTindakan mengembalikan tumpukan ke status stabil terakhirnya ketika penerapan gagal dan tidak dapat dibalik secara otomatis. Gunakan tindakan ini untuk memulihkan dari penerapan gagal yang memerlukan intervensi 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"] } });

Memantau perubahan dengan jam tangan

watchTindakan ini terus memantau aplikasi CDK Anda untuk perubahan file lokal dan secara otomatis melakukan penerapan atau hotswap. Ini membuat pengamat file yang berjalan sampai kode Anda keluar atau dihentikan.

Awas

Penerapan Hotswap memperbarui sumber daya secara langsung tanpa melalui CloudFormation bila memungkinkan, membuat pembaruan lebih cepat selama pengembangan. Ini diaktifkan secara default untuk watch perintah. Meskipun ini mempercepat siklus pengembangan, ini memperkenalkan penyimpangan antara CloudFormation template Anda dan sumber daya yang digunakan. Oleh karena itu, kami menyarankan Anda untuk tidak menggunakan hotswaps di lingkungan produksi.

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

Fungsi watch mengembalikan IWatcher objek yang memungkinkan Anda mengontrol secara eksplisit kapan harus berhenti menonton. Panggil dispose() metode pada objek ini ketika Anda ingin mengakhiri proses menonton.

Menghapus infrastruktur dengan menghancurkan

destroyTindakan ini menghapus tumpukan CDK dan sumber daya terkait dari. AWS Gunakan tindakan ini untuk membersihkan sumber daya saat tidak lagi dibutuhkan.

penting

Tindakan menghancurkan secara permanen menghapus sumber daya tanpa meminta konfirmasi, tidak seperti versi CLI dari perintah ini. Pastikan Anda memiliki cadangan data penting sebelum menghancurkan tumpukan.

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