View a markdown version of this page

penyebaran cdk - AWS Kit Pengembangan Cloud (AWS CDK) v2

Ini adalah AWS Panduan Pengembang 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.

penyebaran cdk

Menyebarkan satu atau lebih AWS CDK menumpuk ke Anda AWS lingkungan.

Selama penerapan, CDK CLI akan menampilkan indikator kemajuan, mirip dengan apa yang dapat diamati dari AWS CloudFormation konsol.

Jika AWS lingkungan tidak di-bootstrap, hanya tumpukan tanpa aset dan dengan templat yang disintesis di bawah 51.200 byte yang akan berhasil diterapkan.

Penggunaan

$ cdk deploy <arguments> <options>

Argumen

ID tumpukan CDK

ID konstruksi tumpukan CDK dari aplikasi Anda untuk diterapkan.

Tipe: String

Wajib: Tidak

Opsi

Untuk daftar opsi global yang bekerja dengan semua perintah CDK CLI, lihat Opsi global.

--all <BOOLEAN>

Terapkan semua tumpukan di aplikasi CDK Anda.

Nilai default: false

--asset-parallelism <BOOLEAN>

Tentukan apakah akan membangun dan menerbitkan aset secara paralel.

--asset-prebuild <BOOLEAN>

Tentukan apakah akan membangun semua aset sebelum menerapkan tumpukan pertama. Opsi ini berguna untuk build Docker yang gagal.

Nilai default: true

--build-exclude, -E <ARRAY>

Jangan membangun kembali aset dengan ID yang diberikan.

Opsi ini dapat ditentukan beberapa kali dalam satu perintah.

Nilai default: []

--change-set-name <STRING>

Nama AWS CloudFormation ubah diatur untuk membuat.

Opsi ini tidak kompatibel dengan --method='direct'.

--concurrency <NUMBER>

Terapkan beberapa tumpukan secara paralel sambil memperhitungkan dependensi antar tumpukan. Gunakan opsi ini untuk mempercepat penerapan. Anda masih harus memperhitungkan AWS CloudFormation dan lainnya AWS pembatasan tarif akun.

Berikan nomor untuk menentukan jumlah maksimum penerapan simultan (ketergantungan memungkinkan) untuk dilakukan.

Nilai default: 1

--exclusively, -e <BOOLEAN>

Hanya menerapkan tumpukan yang diminta dan jangan sertakan dependensi.

--express <BOOLEAN>

Menyebarkan menggunakan CloudFormation mode ekspres. Mode ekspres memungkinkan penerapan yang lebih cepat melalui CloudFormation dengan melaporkan operasi tumpukan setelah selesai segera CloudFormation menerapkan konfigurasi sumber daya. Namun, CloudFormation melaporkan keberhasilan tanpa menunggu sumber daya stabil. Selain itu, mode ekspres tidak melakukan rollback secara otomatis dan akan meninggalkan tumpukan dalam keadaan gagal jika terjadi kesalahan. Untuk mengaktifkan rollback otomatis dengan mode ekspres, sertakan --rollback tandai dalam penerapan mode ekspres Anda.

Untuk informasi lebih lanjut, lihat modus ekspres di AWS CloudFormation Panduan Pengguna.

catatan

Mode ekspres tidak menunggu stabilisasi sebelum melaporkan keberhasilan dan tidak melakukan rollback otomatis setelah kegagalan. Kami tidak merekomendasikan mode ekspres untuk penerapan produksi. Mode ekspres ditargetkan untuk penerapan berulang yang akan Anda lakukan saat mengembangkan aplikasi Anda.

Nilai default: false

--force, -f <BOOLEAN>

Saat Anda menerapkan untuk memperbarui tumpukan yang ada, CDK CLI akan membandingkan template dan tag dari tumpukan yang digunakan dengan tumpukan yang akan digunakan. Jika tidak ada perubahan yang terdeteksi, CDK CLI akan melewati penerapan.

Untuk mengganti perilaku ini dan selalu menerapkan tumpukan, meskipun tidak ada perubahan yang terdeteksi, gunakan opsi ini.

Nilai default: false

--help, -h <BOOLEAN>

Tampilkan informasi referensi perintah untuk cdk deploy perintah.

--hotswap <BOOLEAN>

Penerapan Hotswap untuk pengembangan yang lebih cepat. Opsi ini mencoba melakukan penerapan hotswap yang lebih cepat jika memungkinkan. Misalnya, jika Anda memodifikasi kode fungsi Lambda di aplikasi CDK Anda, CDK CLI akan memperbarui sumber daya secara langsung melalui API layanan alih-alih melakukan CloudFormation penyebaran.

Jika CDK CLI mendeteksi perubahan yang tidak mendukung hotswapping, perubahan tersebut akan diabaikan dan pesan akan ditampilkan. Jika Anda lebih suka melakukan yang penuh CloudFormation penyebaran sebagai jalan mundur, gunakan --hotswap-fallback sebagai gantinya.

CDK CLI menggunakan saat ini AWS kredenSIAL untuk melakukan panggilan API. Itu tidak mengambil peran dari tumpukan bootstrap Anda, bahkan jika @aws-cdk/core:newStyleStackSynthesis bendera fitur diatur ke true. Peran-peran tersebut tidak memiliki izin yang diperlukan untuk memperbarui AWS sumber daya secara langsung, tanpa menggunakan CloudFormation. Untuk alasan itu, pastikan kredensibilitas Anda sama AWS akun tumpukan tempat Anda melakukan penerapan hotswap dan bahwa mereka memiliki izin IAM yang diperlukan untuk memperbarui sumber daya.

Hotswapping saat ini didukung untuk perubahan berikut:

  • Aset kode (termasuk gambar Docker dan kode sebaris), perubahan tag, dan perubahan konfigurasi (hanya deskripsi dan variabel lingkungan yang didukung) fungsi Lambda.

  • Versi lambda dan perubahan alias.

  • Perubahan definisi AWS Fungsi langkah mesin status.

  • Perubahan aset kontainer layanan Amazon ECS.

  • Perubahan aset situs web dari penerapan bucket Amazon S3.

  • Perubahan sumber dan lingkungan AWS CodeBuild proyek.

  • Perubahan template pemetaan VTL untuk AWS AppSync resolver dan fungsi.

  • Perubahan skema untuk AWS AppSync API GraphQL.

  • REST API, penerapan, dan perubahan metode untuk Amazon API Gateway.

  • Perubahan API dan integrasi untuk Amazon API Gateway V2.

  • Perubahan konfigurasi agen Amazon Bedrock.

  • Perubahan konfigurasi Amazon Bedrock AgentCore Waktu pelaksanaan

  • Perubahan aturan untuk Amazon EventBridge.

  • Perubahan konfigurasi tabel Amazon DynamoDB dan tabel global.

  • Perubahan konfigurasi antrian Amazon SQS.

  • Alarm, alarm komposit, dan perubahan dasbor untuk Amazon CloudWatch.

Penggunaan tertentu CloudFormation fungsi intrinsik didukung sebagai bagian dari penyebaran hotswap. Ini termasuk:

  • Ref

  • Fn::GetAtt - Hanya didukung sebagian, menggunakan kombinasi Cloud Control API dan implementasi khusus. Lihat daftar sumber daya yang didukung oleh API Kontrol Awan dan implementasi ini untuk daftar lengkap sumber daya yang didukung.

  • Fn::ImportValue

  • Fn::Join

  • Fn::Select

  • Fn::Split

  • Fn::Sub

Opsi ini juga kompatibel dengan tumpukan bersarang.

catatan
  • Opsi ini sengaja memperkenalkan drift CloudFormation menumpuk untuk mempercepat penerapan. Untuk alasan ini, hanya menggunakannya untuk tujuan pengembangan. Jangan gunakan opsi ini untuk penerapan produksi Anda.

  • Default untuk parameter tertentu mungkin berbeda dengan parameter hotswap. Misalnya, persentase sehat minimum layanan Amazon ECS saat ini akan ditetapkan pada 0. Tinjau sumbernya jika ini terjadi.

  • Saat melakukan a CloudFormation penerapan setelah penerapan hotswap, gunakan cdk deploy --revert-drift untuk menerapkan dengan set perubahan yang sadar drift dan merekonsiliasi penyimpangan apa pun yang diperkenalkan oleh hotswapping.

Nilai default: false

--hotswap-fallback <BOOLEAN>

Opsi ini mirip dengan --hotswap. Perbedaannya adalah --hotswap-fallback akan kembali untuk melakukan CloudFormation penerapan jika perubahan terdeteksi yang membutuhkannya.

Untuk informasi selengkapnya tentang metrik ini, lihat --hotswap.

Nilai default: false

--ignore-no-stacks <BOOLEAN>

Lakukan penerapan meskipun aplikasi CDK Anda tidak berisi tumpukan apa pun.

Opsi ini berguna dalam skenario berikut: Anda mungkin memiliki aplikasi dengan beberapa lingkungan, seperti dev dan prod. Saat memulai pengembangan, aplikasi prod Anda mungkin tidak memiliki sumber daya apa pun, atau sumber daya dapat dikomentari. Ini akan mengakibatkan kesalahan penerapan dengan pesan yang menyatakan bahwa aplikasi tidak memiliki tumpukan. Gunakan --ignore-no-stacks untuk melewati kesalahan ini.

Nilai default: false

--import-existing-resources <BOOLEAN>

Impor yang sudah ada, tidak dikelola AWS CloudFormation sumber daya dari Anda AWS akun.

Saat Anda menggunakan opsi ini, sumber daya dari Anda disintesis AWS CloudFormation template dengan nama kustom yang sama dengan sumber daya yang tidak dikelola yang ada di akun yang sama akan diimpor ke tumpukan Anda.

Anda dapat menggunakan opsi ini untuk mengimpor sumber daya yang ada ke tumpukan baru atau yang sudah ada.

Anda dapat mengimpor sumber daya yang ada dan menyebarkan sumber daya baru di sumber daya yang sama cdk deploy perintah.

Untuk mempelajari lebih lanjut tentang nama khusus, lihat Jenis nama di AWS CloudFormation Panduan Pengguna.

Untuk mempelajari lebih lanjut tentang ImportExistingResources CloudFormation parameter, lihat AWS CloudFormation menyederhanakan impor sumber daya dengan parameter baru untuk ChangeSets.

Untuk informasi selengkapnya tentang menggunakan opsi ini, lihat Impor sumber daya yang ada di aws-cdk-cli GitHub repositori.

--logs <BOOLEAN>

Tampilkan Amazon CloudWatch masuk ke output standar (stdout) untuk semua acara dari semua sumber daya di tumpukan yang dipilih.

Opsi ini hanya kompatibel dengan --watch.

Nilai default: true

--method, -m <STRING>

Konfigurasikan metode untuk melakukan penerapan.

  • change-set — Metode default. CDK CLI menciptakan CloudFormation ubah set dengan perubahan yang akan diterapkan, lalu melakukan penerapan.

  • direct — Jangan membuat set perubahan. Sebaliknya, terapkan perubahan segera. Ini biasanya lebih cepat daripada membuat set perubahan, tetapi Anda kehilangan detail kemajuan penerapan dalam output CLI.

  • prepare-change-set — Buat set perubahan tetapi jangan lakukan penerapan. Ini berguna jika Anda memiliki alat eksternal yang akan memeriksa set perubahan atau jika Anda memiliki proses persetujuan untuk set perubahan. Gunakan execute-change-set untuk mengeksekusi set perubahan yang disiapkan.

  • execute-change-set — Jalankan set perubahan yang sebelumnya dibuat dengan prepare-change-set. Nama set perubahan default menjadi cdk-deploy-change-set, atau Anda dapat menentukan nama khusus dengan --change-set-name.

Nilai yang valid: change-set, direct, execute-change-set, prepare-change-set

Nilai default: change-set

--monitoring-time-minutes <NUMBER>

Jumlah menit yang CloudFormation terus memantau alarm pemicu rollback setelah penerapan selesai, sebelum membersihkan sumber daya lama. Nilai harus berupa bilangan bulat antara 0 dan 180.

Anda harus menggunakan opsi ini bersama dengan --rollback-trigger-alarm-arns .

Nilai default: 0 (CloudFormation memonitor alarm hanya saat penerapan sedang berlangsung)

--notification-arns <ARRAY>

Topik ARN Amazon SNS yang CloudFormation akan memberi tahu untuk acara terkait tumpukan.

--outputs-file, -O <STRING>

Jalur ke tempat keluaran tumpukan dari penerapan ditulis.

Setelah penerapan, output tumpukan akan ditulis ke file output yang ditentukan dalam format JSON.

Anda dapat mengonfigurasi opsi ini di proyek cdk.json berkas atau di ~/.cdk.json pada mesin pengembangan lokal Anda:

{ "app": "npx ts-node bin/myproject.ts", // ... "outputsFile": "outputs.json" }

Jika beberapa tumpukan digunakan, output ditulis ke file output yang sama, diatur oleh kunci yang mewakili nama tumpukan.

--parameters <ARRAY>

Berikan parameter tambahan ke CloudFormation selama penyebaran.

Opsi ini menerima array dalam format berikut: STACK:KEY=VALUE.

  • STACK — Nama tumpukan untuk mengaitkan parameter.

  • KEY — Nama parameter dari tumpukan Anda.

  • VALUE — Nilai yang akan diteruskan saat penerapan.

Jika nama tumpukan tidak disediakan, atau jika * disediakan sebagai nama tumpukan, parameter akan diterapkan ke semua tumpukan yang sedang digunakan. Jika tumpukan tidak menggunakan parameter, penerapan akan gagal.

Parameter tidak menyebar ke tumpukan bersarang. Untuk meneruskan parameter ke tumpukan bersarang, gunakan NestedStack membangun.

Nilai default: {}

--previous-parameters <BOOLEAN>

Gunakan nilai sebelumnya untuk parameter yang ada.

Ketika opsi ini diatur ke false, Anda harus menentukan semua parameter pada setiap penerapan.

Nilai default: true

--progress <STRING>

Konfigurasikan cara CDK CLI menampilkan kemajuan penerapan.

  • bar — Menampilkan peristiwa penerapan tumpukan sebagai bilah kemajuan, dengan peristiwa untuk sumber daya yang saat ini sedang digunakan.

  • events — Berikan riwayat lengkap, termasuk semua CloudFormation peristiwa.

Anda juga dapat mengonfigurasi opsi ini di proyek cdk.json berkas atau di ~/.cdk.json pada mesin pengembangan lokal Anda:

{ "progress": "events" }

Nilai valid: bar, events

Nilai default: bar

--require-approval <STRING>

Tentukan perubahan apa yang memerlukan persetujuan manual.

  • any-change - Persetujuan manual diperlukan untuk setiap perubahan pada tumpukan.

  • broadening Persetujuan manual diperlukan jika perubahan melibatkan perluasan izin atau aturan grup keamanan.

  • never - Persetujuan tidak diperlukan.

Nilai yang valid: any-change, broadening, never

Nilai default: broadening

--revert-drift

Gunakan set perubahan yang sesuai dengan drift-aware untuk penerapan. Ini membuat set perubahan dengan CloudFormationadalah REVERT_DRIFT mode penyebaran, yang mendeteksi sumber daya yang telah menyimpang dari definisi templatnya karena perubahan di luar band dan mengembalikannya ke status yang diinginkan yang ditentukan dalam template Anda.

Lihat Dokumentasi Cloudformation tentang set perubahan yang sadar drift untuk informasi lebih lanjut tentang cara kerjanya.

Nilai default: false

--rollback | --no-rollback, -R

Selama penerapan, jika sumber daya gagal dibuat atau diperbarui, penerapan akan dikembalikan ke status stabil terbaru sebelum CDK CLI kembali. Semua perubahan yang dilakukan hingga saat itu akan dibatalkan. Sumber daya yang dibuat akan dihapus dan pembaruan yang dibuat akan diputar kembali.

Tentukan --no-rollback untuk mematikan perilaku ini. Jika sumber daya gagal dibuat atau diperbarui, CDK CLI akan membiarkan perubahan yang dibuat hingga saat itu tetap di tempatnya dan kembali. Ini akan membuat penerapan Anda dalam keadaan gagal dan dijeda. Dari sini, Anda dapat memperbarui kode Anda dan mencoba penerapan lagi. Ini mungkin membantu dalam lingkungan pengembangan di mana Anda mengulangi dengan cepat.

Jika penerapan dilakukan dengan --no-rollback gagal, dan Anda memutuskan bahwa Anda ingin mengembalikan penerapan, Anda dapat menggunakan cdk rollback perintah. Untuk informasi lebih lanjut, lihat rollback cdk.

catatan

Dengan --no-rollback, penerapan yang menyebabkan penggantian sumber daya akan selalu gagal. Anda hanya dapat menggunakan nilai opsi ini untuk penerapan yang memperbarui atau membuat sumber daya baru.

Nilai default: --rollback

--rollback-trigger-alarm-arns <ARRAY>

ARN dari CloudWatch Alarm yang CloudFormation memantau selama penerapan. Jika salah satu dari alarm ini masuk ke ALARM negara, CloudFormation mengembalikan penerapan. Anda dapat menentukan maksimal 5 alarm. Alarm diperlakukan sebagai alarm metrik (AWS::CloudWatch::Alarm).

Opsi ini dapat ditentukan beberapa kali dalam satu perintah.

Untuk menghapus pemicu rollback yang sebelumnya dikonfigurasi pada tumpukan, berikan nilai tunggal none.

Untuk mengontrol berapa lama CloudFormation terus memantau alarm ini setelah penerapan selesai, gunakan --monitoring-time-minutes .

--toolkit-stack-name <STRING>

Nama tumpukan CDK Toolkit yang ada.

Secara default, cdk bootstrap menyebarkan tumpukan bernama CDKToolkit ke dalam yang ditentukan AWS lingkungan. Gunakan opsi ini untuk memberikan nama yang berbeda untuk tumpukan bootstrap Anda.

CDK CLI menggunakan nilai ini untuk memverifikasi versi tumpukan bootstrap Anda.

--watch <BOOLEAN>

Terus amati file proyek CDK, dan gunakan tumpukan yang ditentukan secara otomatis ketika perubahan terdeteksi.

Opsi ini menyiratkan --hotswap secara default.

Opsi ini memiliki perintah CDK CLI yang setara. Untuk informasi lebih lanjut, lihat arloji cdk.

Contoh

Terapkan tumpukan bernama MyStackName

$ cdk deploy MyStackName --app='node bin/main.js'

Menyebarkan beberapa tumpukan dalam aplikasi

Gunakan cdk list untuk membuat daftar tumpukan Anda:

$ cdk list CdkHelloWorldStack CdkStack2 CdkStack3

Untuk menerapkan semua tumpukan, gunakan --all pilihan:

$ cdk deploy --all

Untuk memilih tumpukan mana yang akan digunakan, berikan nama tumpukan sebagai argumen:

$ cdk deploy CdkHelloWorldStack CdkStack3

Terapkan tumpukan pipa

Gunakan cdk list untuk menampilkan nama tumpukan sebagai jalur, menunjukkan di mana mereka berada dalam hierarki pipeline:

$ cdk list PipelineStack PiplelineStack/Prod PipelineStack/Prod/MyService

Gunakan --all opsi atau wildcard * untuk menyebarkan semua tumpukan. Jika Anda memiliki hierarki tumpukan seperti yang dijelaskan di atas, --all dan * hanya akan mencocokkan tumpukan di tingkat atas. Untuk mencocokkan semua tumpukan dalam hierarki, gunakan **.

Anda dapat menggabungkan pola-pola ini. Berikut ini menerapkan semua tumpukan di Prod tahap:

$ cdk deploy PipelineStack/Prod/**

Luluskan parameter saat penerapan

Tentukan parameter dalam tumpukan CDK Anda. Berikut ini adalah contoh yang membuat parameter bernama TopicNameParam untuk topik Amazon SNS:

new sns.Topic(this, 'TopicParameter', { topicName: new cdk.CfnParameter(this, 'TopicNameParam').value.toString() });

Untuk memberikan nilai parameter parameterized, jalankan yang berikut ini:

$ cdk deploy --parameters "MyStackName:TopicNameParam=parameterized"

Anda dapat mengganti nilai parameter dengan menggunakan --force pilihan. Berikut ini adalah contoh penggantian nama topik dari penerapan sebelumnya:

$ cdk deploy --parameters "MyStackName:TopicNameParam=parameterName" --force

Tulis output tumpukan ke file setelah penerapan

Tentukan output dalam file tumpukan CDK Anda. Berikut ini adalah contoh yang membuat output untuk fungsi ARN:

const fn = new lambda.Function(this, "fn", { handler: "index.handler", code: lambda.Code.fromInline(`exports.handler = \${handler.toString()}`), runtime: lambda.Runtime.NODEJS_LATEST }); new cdk.CfnOutput(this, 'FunctionArn', { value: fn.functionArn, });

Terapkan tumpukan dan tulis output ke outputs.json:

$ cdk deploy --outputs-file outputs.json

Berikut ini adalah contoh outputs.json setelah penyebaran:

{ "MyStack": { "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:MyStack-fn5FF616E3-G632ITHSP5HK" } }

Dari contoh ini, kuncinya FunctionArn sesuai dengan ID logis dari CfnOutput contoh.

Berikut ini adalah contoh outputs.json setelah penerapan ketika beberapa tumpukan digunakan:

{ "MyStack": { "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:MyStack-fn5FF616E3-G632ITHSP5HK" }, "AnotherStack": { "VPCId": "vpc-z0mg270fee16693f" } }

Ubah metode penerapan

Untuk menerapkan lebih cepat, tanpa menggunakan set perubahan, gunakan --method='direct':

$ cdk deploy --method='direct'

Untuk membuat set perubahan tetapi tidak menerapkan, gunakan --method='prepare-change-set'. Secara default, kumpulan perubahan bernama cdk-deploy-change-set akan diciptakan. Jika set perubahan sebelumnya dengan nama ini ada, itu akan diganti. Jika tidak ada perubahan yang terdeteksi, kumpulan perubahan kosong masih dibuat.

Anda juga dapat memberi nama set perubahan Anda. Berikut ini adalah contohnya:

$ cdk deploy --method='prepare-change-set' --change-set-name='MyChangeSetName'