AWS CDK aplikasi - 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.

AWS CDK aplikasi

AWS Cloud Development Kit (AWS CDK) Aplikasi atau aplikasi adalah kumpulan dari satu atau lebih tumpukan CDK. Tumpukan adalah kumpulan dari satu atau lebih konstruksi, yang mendefinisikan AWS sumber daya dan properti. Oleh karena itu, pengelompokan keseluruhan tumpukan dan konstruksi Anda dikenal sebagai aplikasi CDK Anda.

Mendefinisikan aplikasi

Anda membuat aplikasi dengan mendefinisikan instance aplikasi dalam file aplikasi project Anda. Untuk melakukan ini, Anda mengimpor dan menggunakan Appkonstruksi dari Construct AWS Library. AppKonstruk tidak memerlukan argumen inisialisasi apa pun. Ini adalah satu-satunya konstruksi yang dapat digunakan sebagai root.

StackKelas App dan dari Perpustakaan AWS Konstruksi adalah konstruksi yang unik. Dibandingkan dengan konstruksi lain, mereka tidak mengonfigurasi AWS sumber daya sendiri. Sebaliknya, mereka digunakan untuk menyediakan konteks untuk konstruksi Anda yang lain. Semua konstruksi yang mewakili AWS sumber daya harus didefinisikan, secara langsung atau tidak langsung, dalam lingkup konstruksi. Stack Stackkonstruksi didefinisikan dalam lingkup App konstruksi.

Aplikasi kemudian disintesis untuk membuat AWS CloudFormation template untuk tumpukan Anda. Berikut ini adalah contohnya:

TypeScript
const app = new App(); new MyFirstStack(app, 'hello-cdk'); app.synth();
JavaScript
const app = new App(); new MyFirstStack(app, 'hello-cdk'); app.synth();
Python
app = App() MyFirstStack(app, "hello-cdk") app.synth()
Java
App app = new App(); new MyFirstStack(app, "hello-cdk"); app.synth();
C#
var app = new App(); new MyFirstStack(app, "hello-cdk"); app.Synth();
Go
app := awscdk.NewApp(nil) MyFirstStack(app, "MyFirstStack", &MyFirstStackProps{ awscdk.StackProps{ Env: env(), }, }) app.Synth(nil)

Tumpukan dalam satu aplikasi dapat dengan mudah merujuk ke sumber daya dan properti masing-masing. AWS CDK Menyimpulkan dependensi antar tumpukan sehingga dapat digunakan dalam urutan yang benar. Anda dapat menerapkan salah satu atau semua tumpukan dalam aplikasi dengan satu cdk deploy perintah.

Pohon konstruksi

Konstruksi didefinisikan di dalam konstruksi lain menggunakan scope argumen yang diteruskan ke setiap konstruksi, dengan App kelas sebagai root. Dengan cara ini, AWS CDK aplikasi mendefinisikan hierarki konstruksi yang dikenal sebagai pohon konstruksi.

Akar pohon ini adalah aplikasi Anda, yang merupakan instance dari App kelas. Di dalam aplikasi, Anda membuat instance satu atau lebih tumpukan. Di dalam tumpukan, Anda membuat instance konstruksi, yang mungkin membuat instance sumber daya atau konstruksi lain, dan seterusnya di bawah pohon.

Konstruksi selalu didefinisikan secara eksplisit dalam lingkup konstruksi lain, yang menciptakan hubungan antar konstruksi. Hampir selalu, Anda harus meneruskan this (dengan Python,self) sebagai ruang lingkup, yang menunjukkan bahwa konstruksi baru adalah anak dari konstruksi saat ini. Pola yang dimaksud adalah Anda mendapatkan konstruksi Anda Construct, lalu membuat instance konstruksi yang digunakannya dalam konstruktornya.

Melewati ruang lingkup secara eksplisit memungkinkan setiap konstruksi untuk menambahkan dirinya ke pohon, dengan perilaku ini sepenuhnya terkandung dalam kelas dasar. Construct Ia bekerja dengan cara yang sama dalam setiap bahasa yang didukung oleh AWS CDK dan tidak memerlukan kustomisasi tambahan.

penting

Secara teknis, dimungkinkan untuk melewati beberapa ruang lingkup selain this saat membuat instance konstruksi. Anda dapat menambahkan konstruksi di mana saja di pohon, atau bahkan di tumpukan lain di aplikasi yang sama. Misalnya, Anda bisa menulis fungsi gaya mixin yang menambahkan konstruksi ke lingkup yang diteruskan sebagai argumen. Kesulitan praktis di sini adalah Anda tidak dapat dengan mudah memastikan bahwa ID yang Anda pilih untuk konstruksi Anda unik dalam lingkup orang lain. Praktik ini juga membuat kode Anda lebih sulit untuk dipahami, dipelihara, dan digunakan kembali. Hampir selalu lebih baik untuk menemukan cara untuk mengekspresikan niat Anda tanpa harus menyalahgunakan argumen. scope

AWS CDK Menggunakan ID dari semua konstruksi di jalur dari akar pohon ke setiap konstruksi anak untuk menghasilkan ID unik yang diperlukan oleh. AWS CloudFormation Pendekatan ini berarti bahwa ID konstruksi hanya perlu unik dalam cakupannya, bukan di dalam seluruh tumpukan seperti di asli AWS CloudFormation. Namun, jika Anda memindahkan konstruksi ke cakupan yang berbeda, ID unik tumpukan yang dihasilkan akan berubah, dan tidak AWS CloudFormation akan menganggapnya sebagai sumber daya yang sama.

Pohon konstruksi terpisah dari konstruksi yang Anda tentukan dalam kode Anda AWS CDK . Namun, ini dapat diakses melalui node atribut konstruksi apa pun, yang merupakan referensi ke simpul yang mewakili konstruksi itu di pohon. Setiap node adalah sebuah Nodeinstance, atribut yang menyediakan akses ke akar pohon dan ke lingkup induk node dan anak-anak.

  1. node.children— Anak-anak langsung dari konstruksi.

  2. node.id— Pengidentifikasi konstruksi dalam ruang lingkupnya.

  3. node.path— Jalur lengkap konstruksi termasuk ID semua orang tuanya.

  4. node.root— Akar pohon konstruksi (aplikasi).

  5. node.scope— Lingkup (induk) dari konstruksi, atau undefined jika node adalah root.

  6. node.scopes— Semua orang tua dari konstruksi, sampai ke akar.

  7. node.uniqueId— Pengidentifikasi alfanumerik unik untuk konstruksi ini di dalam pohon (secara default, dihasilkan dari node.path dan hash).

Pohon konstruksi mendefinisikan urutan implisit di mana konstruksi disintesis ke sumber daya dalam template akhir. AWS CloudFormation Dimana satu sumber daya harus dibuat sebelum yang lain, AWS CloudFormation atau AWS Construct Library umumnya menyimpulkan ketergantungan. Mereka kemudian memastikan bahwa sumber daya dibuat dalam urutan yang benar.

Anda juga dapat menambahkan ketergantungan eksplisit antara dua node dengan menggunakan. node.addDependency() Untuk informasi selengkapnya, lihat Dependensi di Referensi AWS CDK API.

AWS CDK Ini menyediakan cara sederhana untuk mengunjungi setiap node di pohon konstruksi dan melakukan operasi pada masing-masing node. Untuk informasi selengkapnya, lihat Aspek.

Siklus hidup aplikasi

Saat Anda menerapkan aplikasi CDK, fase berikut akan berlangsung. Ini dikenal sebagai siklus hidup aplikasi:

AWS CDK Aplikasi melewati fase berikut dalam siklus hidupnya.

  • Konstruksi (atau Inisialisasi) - Kode Anda membuat instance semua konstruksi yang ditentukan dan kemudian menautkannya bersama-sama. Pada tahap ini, semua konstruksi (aplikasi, tumpukan, dan konstruksi anak mereka) dipakai dan rantai konstruktor dijalankan. Sebagian besar kode aplikasi Anda dijalankan pada tahap ini.

  • Persiapan — Semua konstruksi yang telah menerapkan prepare metode berpartisipasi dalam putaran akhir modifikasi, untuk mengatur keadaan akhir mereka. Fase persiapan terjadi secara otomatis. Sebagai pengguna, Anda tidak melihat umpan balik dari fase ini. Jarang perlu menggunakan kait “siapkan”, dan umumnya tidak disarankan. Berhati-hatilah saat memutasi pohon konstruksi selama fase ini, karena urutan operasi dapat memengaruhi perilaku.

  • Validasi — Semua konstruksi yang telah menerapkan validate metode dapat memvalidasi diri mereka sendiri untuk memastikan bahwa mereka berada dalam keadaan yang akan diterapkan dengan benar. Anda akan mendapatkan pemberitahuan tentang kegagalan validasi yang terjadi selama fase ini. Umumnya, kami merekomendasikan untuk melakukan validasi sesegera mungkin (biasanya segera setelah Anda mendapatkan beberapa masukan) dan melempar pengecualian sedini mungkin. Melakukan validasi lebih awal meningkatkan keandalan karena jejak tumpukan akan lebih akurat, dan memastikan bahwa kode Anda dapat terus dijalankan dengan aman.

  • Sintesis — Ini adalah tahap akhir dari eksekusi AWS CDK aplikasi Anda. Ini dipicu oleh panggilan keapp.synth(), dan melintasi pohon konstruksi dan memanggil synthesize metode pada semua konstruksi. Konstruksi yang mengimplementasikan synthesize dapat berpartisipasi dalam sintesis dan memancarkan artefak penyebaran ke perakitan cloud yang dihasilkan. Artefak ini termasuk AWS CloudFormation template, bundel AWS Lambda aplikasi, aset file dan Docker gambar, dan artefak penyebaran lainnya. Rakitan awanmenjelaskan output dari fase ini. Dalam kebanyakan kasus, Anda tidak perlu menerapkan synthesize metode ini.

  • Deployment — Pada fase ini, AWS CDK CLI mengambil perakitan cloud artefak penyebaran yang dihasilkan oleh fase sintesis dan menyebarkannya ke lingkungan. AWS Ini mengunggah aset ke Amazon S3 dan Amazon ECR, atau ke mana pun mereka harus pergi. Kemudian, ia memulai AWS CloudFormation penyebaran untuk menyebarkan aplikasi dan membuat sumber daya.

Pada saat fase AWS CloudFormation penerapan dimulai, AWS CDK aplikasi Anda telah selesai dan keluar. Ini memiliki implikasi sebagai berikut:

  • AWS CDK Aplikasi tidak dapat merespons peristiwa yang terjadi selama penerapan, seperti sumber daya yang sedang dibuat atau seluruh penyelesaian penerapan. Untuk menjalankan kode selama fase penerapan, Anda harus menyuntikkannya ke AWS CloudFormation template sebagai sumber daya khusus. Untuk informasi selengkapnya tentang menambahkan resource kustom ke aplikasi Anda, lihat AWS CloudFormation modul, atau contoh sumber daya khusus.

  • AWS CDK Aplikasi mungkin harus bekerja dengan nilai yang tidak dapat diketahui pada saat dijalankan. Misalnya, jika AWS CDK aplikasi mendefinisikan bucket Amazon S3 dengan nama yang dibuat secara otomatis, dan Anda mengambil atribut bucket.bucketName (Pythonbucket_name:), nilai tersebut bukanlah nama bucket yang diterapkan. Sebaliknya, Anda mendapatkan Token nilai. Untuk menentukan apakah nilai tertentu tersedia, panggil cdk.isUnresolved(value) (Python:is_unresolved). Lihat Token untuk detail.

Rakitan awan

Panggilan ke app.synth() adalah apa yang memberitahu AWS CDK untuk mensintesis perakitan cloud dari sebuah aplikasi. Biasanya Anda tidak berinteraksi langsung dengan rakitan cloud. Mereka adalah file yang menyertakan semua yang diperlukan untuk menerapkan aplikasi Anda ke lingkungan cloud. Misalnya, ini menyertakan AWS CloudFormation template untuk setiap tumpukan di aplikasi Anda. Ini juga menyertakan salinan aset file atau gambar Docker apa pun yang Anda referensikan di aplikasi Anda.

Lihat spesifikasi perakitan cloud untuk detail tentang cara rakitan cloud diformat.

Untuk berinteraksi dengan rakitan cloud yang dibuat AWS CDK aplikasi Anda, Anda biasanya menggunakan file AWS CDK CLI. Namun, alat apa pun yang dapat membaca format perakitan cloud dapat digunakan untuk menerapkan aplikasi Anda.

Menjalankan aplikasi Anda

CDK CLI perlu tahu cara menjalankan AWS CDK aplikasi Anda. Jika Anda membuat project dari template menggunakan cdk init perintah, cdk.json file aplikasi Anda menyertakan app kunci. Kunci ini menentukan perintah yang diperlukan untuk bahasa yang digunakan aplikasi. Jika bahasa Anda memerlukan kompilasi, baris perintah melakukan langkah ini sebelum menjalankan aplikasi, jadi Anda tidak bisa lupa melakukannya.

TypeScript
{ "app": "npx ts-node --prefer-ts-exts bin/my-app.ts" }
JavaScript
{ "app": "node bin/my-app.js" }
Python
{ "app": "python app.py" }
Java
{ "app": "mvn -e -q compile exec:java" }
C#
{ "app": "dotnet run -p src/MyApp/MyApp.csproj" }
Go
{ "app": "go mod download && go run my-app.go" }

Jika Anda tidak membuat proyek menggunakan CDKCLI, atau jika Anda ingin mengganti baris perintah yang diberikancdk.json, Anda dapat menggunakan --app opsi saat mengeluarkan perintah. cdk

$ cdk --app 'executable' cdk-command ...

Bagian perintah yang dapat dieksekusi menunjukkan perintah yang harus dijalankan untuk menjalankan aplikasi CDK Anda. Gunakan tanda kutip seperti yang ditunjukkan, karena perintah tersebut berisi spasi. Perintah cdk adalah subperintah seperti synth atau deploy yang memberi tahu CDK CLI apa yang ingin Anda lakukan dengan aplikasi Anda. Ikuti ini dengan opsi tambahan apa pun yang diperlukan untuk subperintah itu.

Ini juga AWS CDK CLI dapat berinteraksi langsung dengan rakitan cloud yang sudah disintesis. Untuk melakukan itu, lewati direktori tempat perakitan cloud disimpan--app. Contoh berikut mencantumkan tumpukan yang ditentukan dalam perakitan cloud yang disimpan di bawah./my-cloud-assembly.

$ cdk --app ./my-cloud-assembly ls