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"] } });
Melestarikan sumber daya yang digunakan dengan refactor
penting
Tindakan refactor ada dalam rilis pratinjau dan dapat berubah sewaktu-waktu.
refactorTindakan ini mempertahankan sumber daya yang diterapkan saat Anda memfaktorkan ulang kode CDK seperti mengganti nama konstruksi atau memindahkannya di antara tumpukan. Tanpa fitur ini, perubahan ini akan CloudFormation menyebabkan penggantian sumber daya, yang berpotensi menyebabkan gangguan layanan atau kehilangan data.
Tindakan refactor secara otomatis menghitung pemetaan dengan membandingkan kode Anda saat ini dengan status yang diterapkan. Ini memverifikasi bahwa aplikasi CDK Anda berisi kumpulan sumber daya yang persis sama dengan status yang diterapkan, hanya berbeda di lokasi mereka di pohon konstruksi. Jika mendeteksi penambahan, penghapusan, atau modifikasi sumber daya apa pun, operasi refactoring akan ditolak dengan pesan kesalahan.
Setelah menghitung pemetaan, tindakan refactor menggunakan CloudFormation API refactoring untuk memperbarui logika sumber daya tanpa menggantinya. IDs Jika menemukan pemetaan ambigu (di mana ada beberapa kemungkinan pemetaan), Anda dapat memberikan penggantian eksplisit untuk menyelesaikan ambiguitas ini.
// Perform refactoring operation to preserve resources await toolkit.refactor(cloudAssemblySource); // With optional overrides to resolve ambiguities await toolkit.refactor(cloudAssemblySource, { overrides: { "environments": [ { "account": "123456789012", "region": "us-east-2", "resources": { "StackA.OldName": "StackA.NewName" } } ] } });
penting
Operasi refactoring harus dilakukan secara terpisah dari tindakan lain, seperti menambahkan sumber daya baru, menghapus sumber daya, atau memodifikasi properti sumber daya. Jika Anda perlu membuat perubahan seperti itu, Anda harus terlebih dahulu menerapkan perubahan tersebut secara terpisah, dan kemudian menggunakan refactoring untuk mengatur ulang sumber daya Anda.
Tip
Untuk informasi selengkapnya tentang refactoring CDK, termasuk cara kerjanya dan kapan menggunakannya, lihat Mempertahankan sumber daya yang diterapkan saat memfaktorkan ulang kode CDK.
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 arloji
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 jam tangan 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 terkaitnya 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 apa pun 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 } });