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.
Mengelola AWS sumber perakitan cloud Perpustakaan Toolkit CDK
Gunakan Perpustakaan Toolkit AWS CDK untuk mengonfigurasi sumber perakitan cloud dan menyesuaikan cara Anda menerapkan aplikasi CDK Anda. Panduan ini menunjukkan cara mengonfigurasi sumber perakitan cloud untuk memenuhi persyaratan penerapan dan kebutuhan alur kerja Anda.
Sebelum Anda menggunakan CDK Toolkit, tentukan sumber perakitan cloud. Sumber perakitan cloud memberikan instruksi untuk membuat perakitan cloud dari aplikasi CDK Anda. Perakitan cloud yang dihasilkan berisi artefak infrastruktur yang disintesis yang digunakan oleh CDK Toolkit. AWS
Perpustakaan Toolkit CDK menawarkan beberapa pendekatan untuk mengonfigurasi sumber perakitan cloud, masing-masing cocok untuk skenario dan alur kerja yang berbeda.
Memilih sumber perakitan cloud
Metode | Terbaik Untuk | Pertimbangan |
---|---|---|
|
Bekerja dengan aplikasi CDK yang ada dalam bahasa apa pun yang didukung. |
Membutuhkan runtime bahasa yang sesuai untuk diinstal. |
|
Membuat konstruksi CDK sejalan dengan kontrol penuh atas proses sintesis. |
Menyediakan akses tingkat rendah ke fungsionalitas CDK dan dapat digunakan untuk membangun versi khusus dari metode lain seperti. |
|
Menggunakan rakitan cloud yang telah disintesis sebelumnya. |
Eksekusi lebih cepat karena langkah sintesis dilewati. |
Sumber Kustom |
Skenario yang sangat khusus yang membutuhkan implementasi kustom lengkap. |
Membutuhkan implementasi |
Mengonfigurasi sumber perakitan cloud Anda
Dari aplikasi CDK yang ada
Gunakan fromCdkApp
metode ini untuk bekerja dengan aplikasi CDK yang ditulis dalam bahasa apa pun yang didukung. Pendekatan ini sangat ideal ketika Anda memiliki aplikasi CDK yang ada dan ingin menerapkannya secara terprogram.
import { App } from 'aws-cdk-lib'; import { Toolkit } from '@aws-cdk/toolkit-lib'; // Create a toolkit instance const toolkit = new Toolkit(); // TypeScript app const cloudAssemblySource = await toolkit.fromCdkApp("ts-node app.ts"); // Deploy a specific stack from the assembly await toolkit.deploy(cloudAssemblySource, { stacks: ['MyStack'] }); // Other language examples: // JavaScript app // const cloudAssemblySource = await toolkit.fromCdkApp("node app.js"); // Python app // const cloudAssemblySource = await toolkit.fromCdkApp("python app.py"); // Java app // const cloudAssemblySource = await toolkit.fromCdkApp("mvn -e -q exec:java -Dexec.mainClass=com.mycompany.app.App");
Dari pembuat perakitan inline
Buat aplikasi CDK langsung di kode Anda menggunakan fungsi pembuat perakitan. Pendekatan ini berguna untuk penerapan sederhana atau skenario pengujian di mana Anda ingin menentukan infrastruktur Anda secara inline.
import { App, Stack, RemovalPolicy, StackProps } from 'aws-cdk-lib'; import { Bucket } from 'aws-cdk-lib/aws-s3'; import { Toolkit } from '@aws-cdk/toolkit-lib'; import { Construct } from 'constructs'; // Create a cloud assembly source from an inline CDK app const cloudAssemblySource = await toolkit.fromAssemblyBuilder(async () => { const app = new App(); // Define a simple stack with an S3 bucket class MyStack extends Stack { constructor(scope: Construct, id: string, props?: StackProps) { super(scope, id, props); // Create an S3 bucket new Bucket(this, 'MyBucket', { versioned: true, removalPolicy: RemovalPolicy.DESTROY, autoDeleteObjects: true }); } } // Instantiate the stack new MyStack(app, 'MyInlineStack'); return app.synth(); }); // Deploy using the cloud assembly source await toolkit.deploy(cloudAssemblySource, { stacks: ['MyInlineStack'] });
Dari direktori perakitan yang ada
Jika Anda sudah memiliki rakitan cloud yang disintesis, Anda dapat menggunakannya secara langsung. Ini berguna ketika Anda sudah menjalankan cdk synth
atau saat bekerja dengan rakitan cloud yang dihasilkan oleh pipeline CI/CD.
import { Toolkit } from '@aws-cdk/toolkit-lib'; // Create a toolkit instance const toolkit = new Toolkit(); // Use an existing cloud assembly directory const cloudAssemblySource = await toolkit.fromAssemblyDirectory("cdk.out"); // Deploy using the cloud assembly source await toolkit.deploy(cloudAssemblySource, { stacks: ['MyStack'] });
Bekerja dengan rakitan cloud yang di-cache
Saat bekerja dengan rakitan cloud, Anda memiliki dua opsi:
-
Gunakan sumber perakitan cloud secara langsung (sederhana tetapi mungkin lebih lambat):
// Each operation triggers a new synthesis await toolkit.deploy(cloudAssemblySource, { /* options */ }); await toolkit.list(cloudAssemblySource, { /* options */ });
-
Cache rakitan cloud (lebih cepat untuk beberapa operasi):
// Synthesize once and reuse const cloudAssembly = await toolkit.synth(cloudAssemblySource); try { // Multiple operations use the same assembly await toolkit.deploy(cloudAssembly, { /* options */ }); await toolkit.list(cloudAssembly, { /* options */ }); } finally { // Clean up when done await cloudAssembly.dispose(); }
Gunakan rakitan yang di-cache saat:
-
Anda melakukan beberapa operasi (menyebarkan, daftar, diff, dll.).
-
Aplikasi CDK Anda tidak sering berubah selama operasi.
-
Anda menginginkan kinerja yang lebih cepat.
Gunakan sumber perakitan cloud secara langsung saat:
-
Kau melakukan satu operasi.
-
Aplikasi CDK Anda sering berubah.
-
Anda menginginkan kode yang lebih sederhana dan tidak perlu memprioritaskan kecepatan operasi Toolkit.
penting
Sebagian besar interaksi Toolkit harus menggunakan rakitan yang di-cache untuk kinerja yang lebih baik. Satu-satunya waktu untuk menghindari caching adalah ketika sumber Anda sering berubah dan memeriksa perubahan akan mahal.
Cara membuat, cache, dan menggunakan kembali rakitan cloud
Setelah Anda membuat sumber perakitan cloud, Anda dapat membuat perakitan cloud dengan mensintesisnya. Perakitan cloud berisi AWS CloudFormation template dan aset yang diperlukan untuk penerapan.
Kami menyarankan Anda membuat perakitan cloud sekali dan menggunakannya kembali untuk beberapa operasi Toolkit. Pendekatan caching ini lebih efisien daripada meregenerasi rakitan untuk setiap operasi. Pertimbangkan untuk meregenerasi rakitan hanya jika sumber Anda sering berubah.
Berikut cara membuat rakitan cloud yang di-cache:
// Generate a cloud assembly from your source const cloudAssembly = await toolkit.synth(cloudAssemblySource);
Anda kemudian dapat melakukan berbagai tindakan Toolkit pada rakitan cloud yang di-cache, seperti, list()
deploy()
, dan. diff()
Dengan cache rakitan cloud, tindakan Toolkit selanjutnya dilakukan lebih cepat karena sintesis hanya terjadi sekali. Untuk informasi selengkapnya, lihat synth - Menghasilkan rakitan cloud.
Buang sumber daya perakitan cloud
Selalu buang rakitan cloud setelah Anda selesai menggunakannya untuk membersihkan sumber daya sementara. Sebaiknya gunakan blok coba/akhirnya untuk memastikan pembersihan yang tepat, terutama saat melakukan beberapa operasi:
// Generate a cloud assembly const cloudAssembly = await toolkit.synth(cloudAssemblySource); try { // Use the cloud assembly for multiple operations await toolkit.list(cloudAssembly); await toolkit.deploy(cloudAssembly); } finally { // Always dispose when done await cloudAssembly.dispose(); }
Berikut adalah contoh yang menunjukkan cara membuat dan membuang rakitan cloud yang di-cache:
import { Toolkit } from '@aws-cdk/toolkit-lib'; const toolkit = new Toolkit(); // Create cloud assembly source from a CDK app const cloudAssemblySource = await toolkit.fromCdkApp("ts-node app.ts"); // Create cloud assembly from source const cloudAssembly = await toolkit.synth(cloudAssemblySource); try { // List stacks in the assembly await toolkit.list(cloudAssembly); // Check for changes await toolkit.diff(cloudAssembly); // Deploy if needed await toolkit.deploy(cloudAssembly); } finally { // Always dispose when done await cloudAssembly.dispose(); }
Memahami masa pakai perakitan cloud
Saat Anda membuat rakitan cloud yang di-cache menggunakansynth()
, Anda mendapatkan tipe khusus yang berfungsi sebagai file yang dapat dibaca CloudAssembly
dan file. CloudAssemblySource
Setiap rakitan cloud yang dihasilkan dari rakitan cache ini (misalnya, dari operasi daftar atau penerapan) terkait dengan masa pakai induk:
-
Hanya panggilan dispose () induk yang benar-benar membersihkan sumber daya
-
Rakitan cloud dari operasi daftar/penerapan dikelola oleh induknya
-
Gagal membuang rakitan cloud yang di-cache dianggap sebagai bug
Praktik terbaik untuk sumber perakitan cloud
Saat bekerja dengan sumber perakitan cloud, pertimbangkan praktik terbaik ini:
-
Pilih metode sumber yang tepat: Pilih pendekatan yang paling sesuai dengan alur kerja dan persyaratan Anda.
-
Rakitan cloud cache: Hasilkan rakitan cloud setelah digunakan
synth()
dan gunakan kembali untuk beberapa operasi untuk menghindari sintesis yang tidak perlu, terutama untuk aplikasi besar. -
Penanganan kesalahan: Menerapkan penanganan kesalahan dasar untuk menangkap dan menampilkan kesalahan kepada pengguna. Jaga penanganan kesalahan tetap sederhana dan fokus pada penyediaan pesan kesalahan yang jelas.
-
Kompatibilitas versi: Pastikan versi CDK Toolkit Library Anda dapat mendukung rakitan cloud yang sedang Anda kerjakan. Jika Perpustakaan Konstruksi yang digunakan untuk membuat perakitan cloud lebih baru dari yang didukung Perpustakaan Toolkit Anda, Anda akan menerima kesalahan.
-
Variabel lingkungan: Sadarilah bahwa variabel lingkungan tertentu dapat memengaruhi sintesis dan penerapan perakitan cloud. Variabel seperti
CDK_DEFAULT_ACCOUNT
,CDK_DEFAULT_REGION
,CDK_OUTDIR
, danCDK_CONTEXT_JSON
dapat mengesampingkan perilaku default. Pastikan ini diatur dengan tepat untuk lingkungan penerapan Anda.
Contoh berikut menunjukkan cara menerapkan penanganan kesalahan dan pembersihan yang tepat saat menggunakan kembali perakitan cloud untuk beberapa operasi:
import { Toolkit } from '@aws-cdk/toolkit-lib'; // Example with error handling and proper cleanup async function deployInfrastructure(): Promise<void> { let cloudAssembly; try { // Generate a cloud assembly once cloudAssembly = await toolkit.synth(cloudAssemblySource); // Reuse the same cloud assembly for multiple operations await toolkit.list(cloudAssembly); // Uses existing assembly await toolkit.deploy(cloudAssembly); // Uses existing assembly await toolkit.diff(cloudAssembly); // Uses existing assembly } catch (error) { console.error("Failed to deploy:", error); } finally { // Always dispose when done if (cloudAssembly) { await cloudAssembly.dispose(); } } } // Call the async function deployInfrastructure().catch(error => { console.error("Deployment failed:", error); process.exit(1); });
Menyelesaikan masalah potensial
Ikuti langkah-langkah ini untuk mengatasi potensi masalah dengan sumber perakitan cloud:
-
Instal dependensi yang hilang: Jalankan
npm install
untuk menginstal dependensi yang diperlukan untuk aplikasi CDK Anda. -
Perbaiki masalah jalur: Periksa apakah jalur ke aplikasi CDK dan direktori perakitan ada dan dapat diakses.
-
Selesaikan ketidakcocokan versi: Perbarui versi CDK Toolkit Library agar sesuai dengan versi aplikasi CDK Anda.
-
Memperbaiki kesalahan sintesis: Tinjau kode aplikasi CDK Anda untuk kesalahan sintaks atau konfigurasi yang tidak valid.
Ketika kesalahan terjadi selama operasi Toolkit, jaga agar penanganan kesalahan tetap sederhana dan fokus pada penyediaan pesan kesalahan yang jelas kepada pengguna. Selalu buang rakitan cloud setelah Anda selesai menggunakannya. Berikut adalah contoh yang menunjukkan penanganan kesalahan dasar dengan pembersihan yang tepat:
import { Toolkit } from '@aws-cdk/toolkit-lib'; // Example with simple error handling try { // Create the cloud assembly source const cloudAssemblySource = await toolkit.fromCdkApp("ts-node app.ts"); // Synthesize the cloud assembly const cloudAssembly = await toolkit.synth(cloudAssemblySource); // Use the cloud assembly await toolkit.list(cloudAssembly); } catch (error) { // Display the error message console.error("Operation failed:", error.message); } finally { // Clean up resources await cloudAssembly.dispose(); }