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 App
konstruksi dari Construct AWS Library. App
Konstruk tidak memerlukan argumen inisialisasi apa pun. Ini adalah satu-satunya konstruksi yang dapat digunakan sebagai root.
Stack
Kelas 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
Stack
konstruksi didefinisikan dalam lingkup App
konstruksi.
Aplikasi kemudian disintesis untuk membuat AWS CloudFormation template untuk tumpukan Anda. Berikut ini adalah contohnya:
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 Node
instance, atribut yang menyediakan akses ke akar pohon dan ke lingkup induk node dan anak-anak.
-
node.children
— Anak-anak langsung dari konstruksi. -
node.id
— Pengidentifikasi konstruksi dalam ruang lingkupnya. -
node.path
— Jalur lengkap konstruksi termasuk ID semua orang tuanya. -
node.root
— Akar pohon konstruksi (aplikasi). -
node.scope
— Lingkup (induk) dari konstruksi, atau undefined jika node adalah root. -
node.scopes
— Semua orang tua dari konstruksi, sampai ke akar. -
node.uniqueId
— Pengidentifikasi alfanumerik unik untuk konstruksi ini di dalam pohon (secara default, dihasilkan darinode.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 ke
app.synth()
, dan melintasi pohon konstruksi dan memanggilsynthesize
metode pada semua konstruksi. Konstruksi yang mengimplementasikansynthesize
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 menerapkansynthesize
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 mendapatkanToken
nilai. Untuk menentukan apakah nilai tertentu tersedia, panggilcdk.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 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.
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