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.
Pengidentifikasi dan CDK AWS
Saat membuat aplikasi AWS Cloud Development Kit (AWS CDK), Anda akan menggunakan banyak jenis pengenal dan nama. Untuk menggunakan AWS CDK secara efektif dan menghindari kesalahan, penting untuk memahami jenis pengidentifikasi.
Pengidentifikasi harus unik dalam ruang lingkup di mana mereka dibuat; mereka tidak perlu unik secara global dalam aplikasi AWS CDK Anda.
Jika Anda mencoba membuat pengenal dengan nilai yang sama dalam lingkup yang sama, AWS CDK akan melempar pengecualian.
Membangun IDs
Pengidentifikasi yang paling umum,id, adalah pengidentifikasi yang diteruskan sebagai argumen kedua saat membuat instance objek konstruksi. Pengidentifikasi ini, seperti semua pengidentifikasi, hanya perlu unik dalam lingkup di mana ia dibuat, yang merupakan argumen pertama ketika membuat instance objek konstruksi.
catatan
Tumpukan juga merupakan pengidentifikasi yang Anda gunakan untuk merujuknya dalam referensi AWS CDK CLI. id
Mari kita lihat contoh di mana kita memiliki dua konstruksi dengan identifier MyBucket di aplikasi kita. Yang pertama didefinisikan dalam lingkup tumpukan dengan pengenalStack1. Yang kedua didefinisikan dalam lingkup tumpukan dengan pengenalStack2. Karena mereka didefinisikan dalam cakupan yang berbeda, ini tidak menyebabkan konflik apa pun, dan mereka dapat hidup berdampingan di aplikasi yang sama tanpa masalah.
contoh
Jalan
Konstruksi dalam aplikasi AWS CDK membentuk hierarki yang berakar di kelas. App Kami mengacu pada koleksi IDs dari konstruksi tertentu, konstruksi induknya, kakek-neneknya, dan seterusnya ke akar pohon konstruksi, sebagai jalan.
AWS CDK biasanya menampilkan jalur di template Anda sebagai string. IDs Dari tingkat dipisahkan oleh garis miring, dimulai dari node segera di bawah App instance root, yang biasanya tumpukan. Misalnya, jalur dari dua sumber daya bucket Amazon S3 dalam contoh kode sebelumnya adalah Stack1/MyBucket dan. Stack2/MyBucket
Anda dapat mengakses jalur konstruksi apa pun secara terprogram, seperti yang ditunjukkan pada contoh berikut. Ini mendapatkan jalur myConstruct (ataumy_construct, seperti yang akan ditulis oleh pengembang Python). Karena IDs harus unik dalam ruang lingkup mereka dibuat, jalur mereka selalu unik dalam aplikasi AWS CDK.
contoh
Unik IDs
AWS CloudFormation mengharuskan semua logis IDs dalam template menjadi unik. Karena itu, AWS CDK harus dapat menghasilkan pengenal unik untuk setiap konstruksi dalam aplikasi. Sumber daya memiliki jalur yang unik secara global (nama semua cakupan dari tumpukan ke sumber daya tertentu). Oleh karena itu, AWS CDK menghasilkan pengidentifikasi unik yang diperlukan dengan menggabungkan elemen jalur dan menambahkan hash 8 digit. (Hash diperlukan untuk membedakan jalur yang berbeda, seperti A/B/C danA/BC, yang akan menghasilkan AWS CloudFormation pengidentifikasi yang sama. AWS CloudFormation pengidentifikasi alfanumerik dan tidak dapat berisi garis miring atau karakter pemisah lainnya.) AWS CDK memanggil string ini ID unik dari konstruksi.
Secara umum, aplikasi AWS CDK Anda tidak perlu tahu tentang unik IDs. Namun, Anda dapat mengakses ID unik dari konstruksi apa pun secara terprogram, seperti yang ditunjukkan pada contoh berikut.
contoh
Alamat adalah jenis lain dari pengidentifikasi unik yang secara unik membedakan sumber daya CDK. Berasal dari hash SHA-1 jalan, itu tidak dapat dibaca manusia. Namun, panjangnya yang konstan dan relatif pendek (selalu 42 karakter heksadesimal) membuatnya berguna dalam situasi di mana ID unik “tradisional” mungkin terlalu panjang. Beberapa konstruksi mungkin menggunakan alamat dalam AWS CloudFormation template yang disintesis, bukan ID unik. Sekali lagi, aplikasi Anda umumnya tidak perlu tahu tentang alamat konstruksinya, tetapi Anda dapat mengambil alamat konstruksi sebagai berikut.
contoh
Logis IDs
Saat AWS CDK mensintesis aplikasi Anda ke dalam AWS CloudFormation template, CDK akan menghasilkan ID logis untuk setiap resource. AWS CloudFormation menggunakan logis IDs untuk mengidentifikasi sumber daya dalam template dan untuk melacaknya di seluruh penerapan. Memahami bagaimana logis IDs dihasilkan membantu Anda menghindari penggantian sumber daya yang tidak diinginkan saat Anda memfaktorkan ulang kode CDK Anda.
Seberapa logis IDs dihasilkan
AWS CDK menghasilkan logis IDs dari jalur konstruksi dengan menggunakan algoritma berikut:
-
Gabungkan komponen jalur dari pohon konstruksi, tidak termasuk tumpukan itu sendiri.
-
Menerapkan heuristik untuk meningkatkan keterbacaan (lihat heuristik komponen jalur ID logis).
-
Tambahkan hash 8 karakter dari jalur lengkap untuk memastikan keunikan.
Format yang dihasilkan adalah:
<human-readable-portion><8-character-hash>
Misalnya, tabel rute subnet pribadi VPC mungkin menghasilkan ID logis. VPCPrivateSubnet2RouteTable0A19E10E
Aturan berikut berlaku untuk pembuatan ID logis:
-
Panjang maksimalnya adalah 255 karakter. Bagian yang dapat dibaca manusia dibatasi pada 240 karakter.
-
Hash 8 karakter memastikan bahwa jalur seperti
A/B/CdanA/BC— yang digabungkan ke string yang sama — menghasilkan logika yang berbeda. IDs -
Sumber daya yang merupakan turunan langsung dari tumpukan (jalur komponen tunggal) menggunakan namanya secara langsung tanpa hash, selama namanya 255 karakter atau kurang.
Heuristik komponen jalur ID logis
AWS CDK menerapkan heuristik berikut ke komponen jalur ketika menghasilkan bagian logis yang dapat dibaca manusia. IDs
-
Default— dihapus seluruhnya -
Jika komponen jalur
Default, CDK menghapusnya dari bagian yang dapat dibaca manusia dan input hash. Ini berarti bahwa membungkus konstruksi yang ada di dalam konstruksi baru — dan menamai konstruksi bagian dalamDefault— menghasilkan ID logis yang sama persis dengan konstruksi terbuka asli. Ini adalah mekanisme kunci untuk memfaktorkan ulang kode datar dengan aman ke konstruksi tingkat yang lebih tinggi tanpa mengubah identitas sumber daya yang diterapkan. -
Resource— tersembunyi dari bagian yang dapat dibaca manusia saja -
Jika komponen jalur
Resource, CDK menghilangkannya dari bagian yang dapat dibaca manusia tetapi masih memasukkannya dalam perhitungan hash. Konstruksi L1 (CloudFormation) digunakanResourcesebagai ID konstruksi mereka berdasarkan konvensi. Ini membuat logis IDs lebih pendek tanpa kehilangan keunikan. - Duplikat komponen berurutan — deduplikasi
-
Jika nama komponen jalur sebelumnya diakhiri dengan nama komponen saat ini, CDK melewatkan komponen saat ini. Ini mencegah pengulangan berlebihan secara logis. IDs
Gunakan Default untuk mempertahankan logis IDs saat Anda memfaktorkan ulang
Saat Anda memfaktorkan ulang tumpukan datar ke konstruksi tingkat yang lebih tinggi, Anda dapat menggunakan Default sebagai ID konstruksi untuk sumber daya utama untuk mempertahankan ID logisnya. Ini AWS CloudFormation mencegah penggantian sumber daya selama penerapan.
Contoh berikut menunjukkan tumpukan dengan sumber daya yang didefinisikan secara langsung:
contoh
Jalur bucket adalahMyStack/DataBucket/Resource, yang menghasilkan ID logis dariDataBucket<hash>.
Anda dapat mengekstrak bucket ke dalam konstruksi tingkat yang lebih tinggi dan mempertahankan ID logis yang sama dengan memberi nama konstruksi bagian dalam: Default
contoh
Jalan ember itu sekarangMyStack/DataBucket/Default/Resource. Karena Default dihapus dari bagian yang dapat dibaca manusia dan input hash, ID logis tetap DataBucket<hash> — identik dengan aslinya.
penting
Anda hanya dapat memiliki satu anak dengan ID Default per lingkup konstruksi. Jika Anda membutuhkan banyak sumber daya pada tingkat yang sama, beri mereka deskriptif IDs. DefaultPola ini bekerja paling baik dengan konstruksi tanggung jawab tunggal yang memiliki satu sumber daya utama.
Pertimbangan dan batasan
Ingatlah hal-hal berikut ketika Anda bekerja dengan logis IDs:
-
Anda dapat menetapkan hanya satu anak per lingkup ID
Defaultkonstruksi. -
Jika Anda mengubah ID konstruksi setelah penerapan, ID logis akan berubah, yang AWS CloudFormation menyebabkan penggantian sumber daya. Gunakan
cdk diffuntuk memverifikasi perubahan sebelum Anda menerapkan. -
Untuk kasus di mana logis IDs telah berubah, Anda dapat menggunakan
cdk refactorperintah untuk memetakan logis lama IDs ke yang baru. Untuk informasi selengkapnya, lihat Mempertahankan sumber daya yang diterapkan saat memfaktorkan ulang kode CDK. -
Untuk informasi selengkapnya tentang bagaimana logis IDs muncul dalam template yang disintesis, lihat Generated logical IDs di AWS CloudFormation template Anda.
Stabilitas ID logis
Hindari mengubah ID logis sumber daya setelah dibuat. AWS CloudFormation mengidentifikasi sumber daya dengan ID logisnya. Oleh karena itu, jika Anda mengubah ID logis sumber daya, AWS CloudFormation membuat sumber daya baru dengan ID logis baru, lalu hapus yang sudah ada. Tergantung pada jenis sumber daya, ini dapat menyebabkan gangguan layanan, kehilangan data, atau keduanya.