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.
Tumpukan
AWS Cloud Development Kit (AWS CDK) Stack adalah kumpulan dari satu atau lebih konstruksi, yang mendefinisikan AWS sumber daya. Setiap tumpukan CDK mewakili AWS CloudFormation tumpukan di aplikasi CDK Anda. Pada penerapan, konstruksi dalam tumpukan disediakan sebagai satu unit, yang disebut tumpukan. AWS CloudFormation Untuk mempelajari lebih lanjut tentang AWS CloudFormation tumpukan, lihat Bekerja dengan tumpukan di AWS CloudFormation Panduan Pengguna.
Karena tumpukan CDK diimplementasikan melalui AWS CloudFormation tumpukan, AWS CloudFormation kuota dan batasan berlaku. Untuk mempelajari lebih lanjut, lihat AWS CloudFormation kuota.
Mendefinisikan tumpukan
Tumpukan didefinisikan dalam konteks aplikasi. Anda mendefinisikan tumpukan menggunakan Stack
kelas dari AWS Construct Library. Tumpukan dapat didefinisikan dengan salah satu cara berikut:
-
Langsung dalam lingkup aplikasi.
-
Secara tidak langsung oleh konstruksi apa pun di dalam pohon.
Contoh berikut mendefinisikan aplikasi CDK yang berisi dua tumpukan:
Contoh berikut adalah pola umum untuk mendefinisikan tumpukan pada file terpisah. Di sini, kita memperluas atau mewarisi Stack
kelas dan mendefinisikan konstruktor yang menerimascope
,, id
dan. props
Kemudian, kita memanggil konstruktor Stack
kelas dasar menggunakan super
dengan yang diterimascope
,id
, dan. props
Contoh berikut mendeklarasikan kelas tumpukan bernama MyFirstStack
yang menyertakan satu bucket Amazon S3.
Namun, kode ini hanya mendeklarasikan tumpukan. Agar tumpukan benar-benar disintesis menjadi AWS CloudFormation template dan digunakan, itu harus dipakai. Dan, seperti semua konstruksi CDK, itu harus dipakai dalam beberapa konteks. Konteksnya App
adalah itu.
Jika Anda menggunakan template AWS CDK pengembangan standar, tumpukan Anda akan dipakai dalam file yang sama tempat Anda membuat instance objek. App
API tumpukan
Objek Stack menyediakan API kaya, termasuk yang berikut ini:
-
Stack.of(construct)
— Metode statis yang mengembalikan Stack di mana konstruksi didefinisikan. Ini berguna jika Anda perlu berinteraksi dengan tumpukan dari dalam konstruksi yang dapat digunakan kembali. Panggilan gagal jika tumpukan tidak dapat ditemukan dalam ruang lingkup. -
stack.stackName
(Python:stack_name
) — Mengembalikan nama fisik tumpukan. Seperti disebutkan sebelumnya, semua AWS CDK tumpukan memiliki nama fisik yang AWS CDK dapat diselesaikan selama sintesis. -
stack.region
danstack.account
— Kembalikan AWS Wilayah dan akun, masing-masing, ke mana tumpukan ini akan digunakan. Properti ini mengembalikan salah satu dari yang berikut:-
Akun atau Wilayah secara eksplisit ditentukan saat tumpukan ditentukan
-
Token yang disandikan string yang menyelesaikan parameter AWS CloudFormation semu untuk akun dan Wilayah untuk menunjukkan bahwa tumpukan ini adalah lingkungan agnostik
Untuk informasi tentang bagaimana lingkungan ditentukan untuk tumpukan, lihatLingkungan.
-
-
stack.addDependency(stack)
(Python:stack.add_dependency(stack)
— Dapat digunakan untuk secara eksplisit mendefinisikan urutan ketergantungan antara dua tumpukan. Urutan ini dihormati oleh cdk deploy perintah saat menerapkan beberapa tumpukan sekaligus. -
stack.tags
— Mengembalikan TagManageryang dapat Anda gunakan untuk menambah atau menghapus tag tingkat tumpukan. Manajer tag ini menandai semua sumber daya di dalam tumpukan, dan juga menandai tumpukan itu sendiri saat dibuat AWS CloudFormation. -
stack.partition
,stack.urlSuffix
(Python:url_suffix
), (stack.stackId
Python:stack_id
), dan (stack.notificationArn
Python:notification_arn
) — Kembalikan token yang menyelesaikan parameter semu masing-masing AWS CloudFormation , seperti.{ "Ref": "AWS::Partition" }
Token ini dikaitkan dengan objek tumpukan tertentu sehingga AWS CDK kerangka kerja dapat mengidentifikasi referensi cross-stack. -
stack.availabilityZones
(Python:availability_zones
) — Mengembalikan set Availability Zones yang tersedia di lingkungan tempat tumpukan ini digunakan. Untuk tumpukan agnostik lingkungan, ini selalu mengembalikan array dengan dua Availability Zones. Untuk tumpukan khusus lingkungan, AWS CDK kueri lingkungan dan menampilkan set persis Availability Zone yang tersedia di Wilayah yang Anda tentukan. -
stack.parseArn(arn)
danstack.formatArn(comps)
(Python:parse_arn
,format_arn
) - Dapat digunakan untuk bekerja dengan Amazon Resource Names (ARN). -
stack.toJsonString(obj)
(Python:to_json_string
) - Dapat digunakan untuk memformat objek arbitrer sebagai string JSON yang dapat disematkan dalam template. AWS CloudFormation Objek dapat menyertakan token, atribut, dan referensi, yang hanya diselesaikan selama penerapan. -
stack.templateOptions
(Python:template_options
) — Gunakan untuk menentukan opsi AWS CloudFormation template, seperti Transform, Description, dan Metadata, untuk tumpukan Anda.
Menggunakan tumpukan
Untuk mencantumkan semua tumpukan di aplikasi CDK, gunakan perintah. cdk ls Contoh sebelumnya akan menampilkan yang berikut:
stack1 stack2
Tumpukan digunakan sebagai bagian dari AWS CloudFormation tumpukan ke lingkungan AWS . Lingkungan mencakup spesifik Akun AWS dan Wilayah AWS.
Saat Anda menjalankan cdk synth perintah untuk aplikasi dengan beberapa tumpukan, rakitan cloud menyertakan templat terpisah untuk setiap instance tumpukan. Bahkan jika dua tumpukan adalah contoh dari kelas yang sama, AWS CDK memancarkannya sebagai dua templat individual.
Anda dapat mensintesis setiap template dengan menentukan nama tumpukan dalam perintah. cdk synth Contoh berikut mensintesis template untuk stack1.
$
cdk synthstack1
Pendekatan ini secara konseptual berbeda dari bagaimana AWS CloudFormation template biasanya digunakan, di mana template dapat digunakan beberapa kali dan diparameterisasi melalui parameter.AWS CloudFormation Meskipun AWS CloudFormation parameter dapat didefinisikan dalam AWS CDK, mereka umumnya tidak disarankan karena AWS CloudFormation parameter diselesaikan hanya selama penerapan. Ini berarti Anda tidak dapat menentukan nilainya dalam kode Anda.
Misalnya, untuk menyertakan sumber daya secara kondisional di aplikasi berdasarkan nilai parameter, Anda harus menyiapkan AWS CloudFormation kondisi dan menandai sumber daya dengannya. Ini AWS CDK mengambil pendekatan di mana templat konkret diselesaikan pada waktu sintesis. Oleh karena itu, Anda dapat menggunakan pernyataan if untuk memeriksa nilai untuk menentukan apakah sumber daya harus didefinisikan atau beberapa perilaku harus diterapkan.
catatan
AWS CDK Ini memberikan resolusi sebanyak mungkin selama waktu sintesis untuk memungkinkan penggunaan bahasa pemrograman Anda secara idiomatik dan alami.
Seperti konstruksi lainnya, tumpukan dapat disusun bersama menjadi beberapa kelompok. Kode berikut menunjukkan contoh layanan yang terdiri dari tiga tumpukan: bidang kontrol, bidang data, dan tumpukan pemantauan. Konstruksi layanan didefinisikan dua kali: sekali untuk lingkungan beta dan sekali untuk lingkungan produksi.
AWS CDK Aplikasi ini akhirnya terdiri dari enam tumpukan, tiga untuk setiap lingkungan:
$
cdk ls
betacpDA8372D3 betadataE23DB2BA betamon632BD457 prodcp187264CE proddataF7378CE5 prodmon631A1083
Nama fisik AWS CloudFormation tumpukan secara otomatis ditentukan oleh AWS CDK berdasarkan jalur konstruksi tumpukan di pohon. Secara default, nama tumpukan berasal dari ID konstruksi Stack
objek. Namun, Anda dapat menentukan nama eksplisit dengan menggunakan stackName
prop (dalam Python,stack_name
), sebagai berikut.
Tumpukan nested
NestedStackKonstruksi menawarkan jalan di sekitar batas AWS CloudFormation 500 sumber daya untuk tumpukan. Tumpukan bersarang dihitung sebagai hanya satu sumber daya di tumpukan yang berisi itu. Namun, dapat berisi hingga 500 sumber daya, termasuk tumpukan bersarang tambahan.
Ruang lingkup tumpukan bersarang harus berupa Stack
atau NestedStack
konstruksi. Tumpukan bersarang tidak perlu dideklarasikan secara leksikal di dalam tumpukan induknya. Anda hanya perlu meneruskan tumpukan induk sebagai parameter pertama (scope
) saat membuat instance tumpukan bersarang. Selain pembatasan ini, mendefinisikan konstruksi dalam tumpukan bersarang bekerja persis sama seperti di tumpukan biasa.
Pada waktu sintesis, tumpukan bersarang disintesis ke AWS CloudFormation templatnya sendiri, yang diunggah ke bucket AWS CDK
pementasan saat penerapan. Tumpukan bersarang terikat pada tumpukan induknya dan tidak diperlakukan sebagai artefak penerapan independen. Mereka tidak terdaftar olehcdk list
, dan mereka tidak dapat digunakan olehcdk
deploy
.
Awas
Perubahan postur keamanan tidak ditampilkan sebelum penerapan untuk tumpukan bersarang. Informasi ini hanya ditampilkan untuk tumpukan tingkat atas.