Ini adalah Panduan Pengembang AWS CDK v2. CDKV1 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 CLI referensi
Antarmuka Baris AWS Cloud Development Kit (AWS CDK) Perintah (AWS CDK CLI), juga dikenal sebagai CDK Toolkit, adalah alat utama untuk berinteraksi dengan AWS CDK aplikasi Anda. Ini mengeksekusi aplikasi Anda, menginterogasi model aplikasi yang Anda tetapkan, dan menghasilkan serta menerapkan AWS CloudFormation template yang dihasilkan oleh. AWS CDK Ini juga menyediakan fitur lain yang berguna untuk membuat dan bekerja dengan AWS CDK proyek. Topik ini berisi informasi tentang kasus penggunaan umum CDK CLI.
The CDK CLI diinstal dengan Node Package Manager. Dalam kebanyakan kasus, kami sarankan untuk menginstalnya secara global.
npm install -g aws-cdk # install latest version npm install -g aws-cdk@X.YY.Z # install specific version
Tip
Jika Anda secara teratur bekerja dengan beberapa versi AWS CDK, pertimbangkan untuk menginstal versi yang cocok CDK CLI dalam CDK proyek individu. Untuk melakukan ini, hilangkan -g
dari npm install
perintah. Kemudian gunakan npx aws-cdk
untuk memanggilnya. Ini menjalankan versi lokal jika ada, kembali ke versi global jika tidak.
CDK CLI perintah
Semua CDK CLI perintah dimulai dengancdk
, yang diikuti oleh subperintah (list
,, synthesize
deploy
, dll.). Beberapa subperintah memiliki versi yang lebih pendek (ls
,synth
, dll.) yang setara. Opsi dan argumen mengikuti subperintah dalam urutan apa pun.
Untuk deskripsi semua subperintah, opsi, dan argumen, lihatAWS CDK CLI referensi perintah.
Tentukan opsi dan nilainya
Opsi baris perintah dimulai dengan dua tanda hubung ()--
. Beberapa opsi yang sering digunakan memiliki sinonim satu huruf yang dimulai dengan tanda hubung tunggal (misalnya, --app
memiliki sinonim). -a
Urutan opsi dalam CDK CLI Perintah tidak penting.
Semua opsi menerima nilai, yang harus mengikuti nama opsi. Nilai dapat dipisahkan dari nama dengan spasi putih atau dengan tanda =
sama dengan. Dua opsi berikut ini setara.
--toolkit-stack-name MyBootstrapStack --toolkit-stack-name=MyBootstrapStack
Beberapa opsi adalah bendera (Booleans). Anda dapat menentukan true
atau false
sebagai nilainya. Jika Anda tidak memberikan nilai, nilainya dianggaptrue
. Anda juga dapat mengawali nama opsi dengan no-
menyiratkanfalse
.
# sets staging flag to true --staging --staging=true --staging true # sets staging flag to false --no-staging --staging=false --staging false
Beberapa opsi, yaitu--context
,--parameters
,--plugin
,--tags
, dan--trust
, dapat ditentukan lebih dari sekali untuk menentukan beberapa nilai. Ini dicatat sebagai memiliki [array]
tipe di CDK CLI membantu. Sebagai contoh:
cdk bootstrap --tags costCenter=0123 --tags responsibleParty=jdoe
Bantuan bawaan
The CDK CLI memiliki bantuan terintegrasi. Anda dapat melihat bantuan umum tentang utilitas dan daftar subperintah yang disediakan dengan mengeluarkan:
cdk --help
Untuk melihat bantuan untuk subperintah tertentu, misalnyadeploy
, tentukan sebelum --help
bendera.
cdk deploy --help
Masalah cdk version
untuk menampilkan versi CDK CLI. Berikan informasi ini saat meminta dukungan.
Pelaporan versi
Untuk mendapatkan wawasan tentang bagaimana AWS CDK digunakan, konstruksi yang digunakan oleh AWS CDK aplikasi dikumpulkan dan dilaporkan dengan menggunakan sumber daya yang diidentifikasi sebagaiAWS::CDK::Metadata
. Sumber daya ini ditambahkan ke AWS CloudFormation templat, dan dapat dengan mudah ditinjau. Informasi ini juga dapat digunakan oleh AWS untuk mengidentifikasi tumpukan menggunakan konstruksi dengan masalah keamanan atau keandalan yang diketahui. Ini juga dapat digunakan untuk menghubungi pengguna mereka dengan informasi penting.
catatan
Sebelum versi 1.93.0, AWS CDK dilaporkan nama dan versi modul dimuat selama sintesis, bukan konstruksi yang digunakan dalam tumpukan.
Secara default, AWS CDK laporan penggunaan konstruksi dalam NPM modul berikut yang digunakan dalam tumpukan:
-
AWS CDK modul inti
-
AWS Membangun modul Perpustakaan
-
AWS Modul Konstruksi Solusi
-
AWS Modul Kit Penyebaran Pertanian Render
Sumber AWS::CDK::Metadata
daya terlihat seperti berikut ini.
CDKMetadata: Type: "AWS::CDK::Metadata" Properties: Analytics: "v2:deflate64:H4sIAND9SGAAAzXKSw5AMBAA0L1b2PdzBYnEAdio3RglglY60zQi7u6TWL/XKmNUlxeQSOKwaPTBqrNhwEWU3hGHiCzK0dWWfAxoL/Fd8mvk+QkS/0X6BdjnCdgmOOQKWz+AqqLDt2Y3YMnLYWwAAAA="
Analytics
Properti ini adalah daftar konstruksi yang di-gzip, dikodekan base64, dan dikodekan awalan di tumpukan.
Menyisih dari pelaporan versi
Anda dapat memilih keluar dari pelaporan versi dengan menggunakan CDK CLI atau dengan mengonfigurasi cdk.json
file proyek Anda.
Untuk memilih keluar dari pelaporan versi menggunakan CDK CLI
-
Gunakan
--no-version-reporting
opsi dengan apa pun CDK CLI perintah untuk memilih keluar untuk satu perintah. Berikut ini adalah contoh memilih keluar selama sintesis template:$
cdk synth --no-version-reporting
Karena template AWS CDK mensintesis secara otomatis saat Anda menjalankan
cdk deploy
, Anda juga harus menggunakan--no-version-reporting
dengancdk deploy
perintah.
Untuk memilih keluar dari pelaporan versi dengan mengonfigurasi file cdk.json
-
Setel
versionReporting
kefalse
dalam./cdk.json
atau~/.cdk.json
. Ini memilih Anda keluar secara default. Berikut adalah contohnya:{ "app": "...", "versionReporting": false }
Setelah mengonfigurasi, Anda dapat mengganti perilaku ini dan ikut serta dengan menentukan perintah
--version-reporting
individual.
catatan
Ketika Anda memilih keluar dari pelaporan versi, tidak AWS CDK akan mengumpulkan atau melaporkan data konstruksi yang Anda gunakan. Karena itu, mereka tidak AWS CDK akan dapat mengidentifikasi apakah Anda terkena dampak masalah keamanan dan tidak akan mengirimi Anda pemberitahuan untuk mereka.
Otentikasi dengan AWS
Ada berbagai cara di mana Anda dapat mengonfigurasi akses terprogram ke AWS sumber daya, tergantung pada lingkungan dan AWS akses yang tersedia untuk Anda.
Untuk memilih metode otentikasi Anda dan mengkonfigurasinya untuk CDK CLI, lihat Konfigurasikan kredensi keamanan untuk AWS CDKCLI.
Pendekatan yang direkomendasikan untuk pengguna baru yang berkembang secara lokal, yang tidak diberi metode otentikasi oleh majikan mereka, adalah dengan mengatur. AWS IAM Identity Center Metode ini termasuk menginstal AWS CLI untuk kemudahan konfigurasi dan untuk masuk secara teratur ke portal AWS akses. Jika Anda memilih metode ini, lingkungan Anda harus berisi elemen-elemen berikut setelah Anda menyelesaikan prosedur untuk otentikasi Pusat IAM Identitas di AWS SDKsdan Panduan Referensi Alat:
-
Itu AWS CLI, yang Anda gunakan untuk memulai sesi portal AWS akses sebelum Anda menjalankan aplikasi Anda.
-
AWS
config
File bersama yang memiliki[default]
profil dengan serangkaian nilai konfigurasi yang dapat direferensikan dari file. AWS CDK Untuk menemukan lokasi file ini, lihat Lokasi file bersama di Panduan Referensi Alat AWS SDKs dan. -
config
File bersama menetapkanregion
pengaturan. Ini menetapkan default Wilayah AWS AWS CDK dan CDK CLI digunakan untuk AWS permintaan. -
The CDK CLI menggunakan konfigurasi penyedia SSO token profil untuk memperoleh kredensil sebelum mengirim permintaan ke. AWS
sso_role_name
Nilai, yang merupakan IAM peran yang terhubung ke set izin Pusat IAM Identitas, harus memungkinkan akses ke yang Layanan AWS digunakan dalam aplikasi Anda.config
File contoh berikut menunjukkan profil default yang diatur dengan konfigurasi penyedia SSO token.sso_session
Pengaturan profil mengacu padasso-session
bagian bernama.sso-session
Bagian ini berisi pengaturan untuk memulai sesi portal AWS akses.[default] sso_session =
my-sso
sso_account_id =111122223333
sso_role_name =SampleRole
region =us-east-1
output = json [sso-sessionmy-sso
] sso_region =us-east-1
sso_start_url =https://provided-domain.awsapps.com/start
sso_registration_scopes = sso:account:access
Memulai sesi portal AWS akses
Sebelum mengakses Layanan AWS, Anda memerlukan sesi portal AWS akses aktif untuk CDK CLI untuk menggunakan otentikasi Pusat IAM Identitas untuk menyelesaikan kredensil. Bergantung pada panjang sesi yang dikonfigurasi, akses Anda pada akhirnya akan kedaluwarsa dan CDK CLI akan mengalami kesalahan otentikasi. Jalankan perintah berikut di AWS CLI untuk masuk ke portal AWS akses.
aws sso login
Jika konfigurasi penyedia SSO token Anda menggunakan profil bernama alih-alih profil default, perintahnya adalahaws sso login --profile
. Tentukan juga profil ini saat mengeluarkan cdk perintah menggunakan --profile opsi atau variabel NAME
AWS_PROFILE
lingkungan.
Untuk menguji apakah Anda sudah memiliki sesi aktif, jalankan AWS CLI perintah berikut.
aws sts get-caller-identity
Respons terhadap perintah ini harus melaporkan akun Pusat IAM Identitas dan set izin yang dikonfigurasi dalam config
file bersama.
catatan
Jika Anda sudah memiliki sesi portal AWS akses aktif dan menjalankannyaaws sso login
, Anda tidak akan diminta untuk memberikan kredensil.
Proses masuk dapat meminta Anda untuk mengizinkan AWS CLI akses ke data Anda. Karena AWS CLI dibangun di atas SDK untuk Python, pesan izin mungkin berisi variasi namabotocore
.
Tentukan Wilayah dan konfigurasi lainnya
The CDK CLI perlu mengetahui AWS Wilayah tempat Anda menerapkan dan cara mengautentikasi. AWS Ini diperlukan untuk operasi penerapan dan untuk mengambil nilai konteks selama sintesis. Bersama-sama, akun dan Wilayah Anda membentuk lingkungan.
Wilayah dapat ditentukan menggunakan variabel lingkungan atau dalam file konfigurasi. Ini adalah variabel dan file yang sama yang digunakan oleh AWS alat lain seperti AWS CLI dan berbagai AWS SDKs. The CDK CLI mencari informasi ini dalam urutan sebagai berikut.
-
Variabel
AWS_DEFAULT_REGION
lingkungan. -
Profil bernama didefinisikan dalam AWS
config
file standar dan ditentukan menggunakan--profile
opsi padacdk
perintah. -
[default]
Bagian dari AWSconfig
file standar.
Selain menentukan AWS otentikasi dan Wilayah di [default]
bagian, Anda juga dapat menambahkan satu atau beberapa [profile
bagian, di mana NAME
]NAME
adalah nama profil. Untuk informasi selengkapnya tentang profil bernama, lihat File konfigurasi dan kredensial bersama di Panduan Referensi Alat AWS SDKs dan Alat.
AWS config
File standar terletak di ~/.aws/config
(MacOS/Linux) atau %USERPROFILE%\.aws\config
(Windows). Untuk detail dan lokasi alternatif, lihat Lokasi file konfigurasi dan kredensil bersama di Panduan Referensi Alat AWS SDKsdan
Lingkungan yang Anda tentukan dalam AWS CDK aplikasi menggunakan env
properti stack digunakan selama sintesis. Ini digunakan untuk menghasilkan AWS CloudFormation template khusus lingkungan, dan selama penerapan, itu mengganti akun atau Wilayah yang ditentukan oleh salah satu metode sebelumnya. Untuk informasi selengkapnya, lihat Lingkungan untuk AWS CDK.
catatan
AWS CDK Menggunakan kredensil dari file sumber yang sama dengan AWS alat lain danSDKs, termasuk file. AWS Command Line Interface Namun, AWS CDK mungkin berperilaku agak berbeda dari alat-alat ini. Ini menggunakan di AWS SDK for JavaScript bawah tenda. Untuk detail selengkapnya tentang menyiapkan kredensil AWS SDK for JavaScript, lihat Menyetel kredensil.
Anda dapat secara opsional menggunakan opsi --role-arn
(atau-r
) untuk menentukan IAM peran yang harus digunakan untuk penerapan. ARN Peran ini harus diasumsikan oleh AWS akun yang digunakan.
Tentukan perintah aplikasi
Banyak fitur dari CDK CLI memerlukan satu atau lebih AWS CloudFormation template disintesis, yang pada gilirannya memerlukan menjalankan aplikasi Anda. Program AWS CDK pendukung yang ditulis dalam berbagai bahasa. Oleh karena itu, ia menggunakan opsi konfigurasi untuk menentukan perintah yang tepat yang diperlukan untuk menjalankan aplikasi Anda. Opsi ini dapat ditentukan dalam dua cara.
Pertama, dan paling umum, dapat ditentukan menggunakan app
kunci di dalam filecdk.json
. Ini ada di direktori utama AWS CDK proyek Anda. The CDK CLI memberikan perintah yang sesuai saat membuat proyek baru dengancdk init
. Berikut adalah cdk.json
dari TypeScript proyek baru, misalnya.
{ "app": "npx ts-node bin/hello-cdk.ts" }
The CDK CLI mencari cdk.json
di direktori kerja saat ini saat mencoba menjalankan aplikasi Anda. Karena itu, Anda mungkin membiarkan shell tetap terbuka di direktori utama proyek Anda untuk diterbitkan CDK CLI perintah.
The CDK CLI juga mencari kunci aplikasi di ~/.cdk.json
(yaitu, di direktori home Anda) jika tidak dapat menemukannya./cdk.json
. Menambahkan perintah aplikasi di sini dapat berguna jika Anda biasanya bekerja dengan CDK kode dalam bahasa yang sama.
Jika Anda berada di beberapa direktori lain, atau menjalankan aplikasi Anda menggunakan perintah selain yang ada dicdk.json
, gunakan opsi --app
(atau-a
) untuk menentukannya.
cdk --app "npx ts-node bin/hello-cdk.ts" ls
Saat menerapkan, Anda juga dapat menentukan direktori yang berisi rakitan cloud yang disintesis, seperticdk.out
, sebagai nilai. --app Tumpukan yang ditentukan digunakan dari direktori ini; aplikasi tidak disintesis.
Tentukan tumpukan
Banyak CDK CLI perintah (misalnya,cdk deploy
) berfungsi pada tumpukan yang ditentukan di aplikasi Anda. Jika aplikasi Anda hanya berisi satu tumpukan, CDK CLI mengasumsikan yang Anda maksud adalah satu jika Anda tidak menentukan tumpukan secara eksplisit.
Jika tidak, Anda harus menentukan tumpukan atau tumpukan yang ingin Anda kerjakan. Anda dapat melakukan ini dengan menentukan tumpukan yang diinginkan berdasarkan ID satu per satu pada baris perintah. Ingat bahwa ID adalah nilai yang ditentukan oleh argumen kedua ketika Anda membuat instance tumpukan.
cdk synth PipelineStack LambdaStack
Anda juga dapat menggunakan wildcard untuk menentukan IDs yang cocok dengan pola.
-
?
cocok dengan karakter tunggal -
*
cocok dengan sejumlah karakter (*
sendiri cocok dengan semua tumpukan) -
**
cocok dengan segala sesuatu dalam hierarki
Anda juga dapat menggunakan --all opsi untuk menentukan semua tumpukan.
Jika aplikasi Anda menggunakan CDKPipelines, CDK CLI memahami tumpukan dan tahapan Anda sebagai hierarki. Selain itu, --all opsi dan *
wildcard hanya cocok dengan tumpukan tingkat atas. Untuk mencocokkan semua tumpukan, gunakan**
. Juga gunakan **
untuk menunjukkan semua tumpukan di bawah hierarki tertentu.
Saat menggunakan wildcard, lampirkan pola dalam tanda kutip, atau lepaskan wildcard dengan. \
Jika tidak, shell Anda mungkin mencoba memperluas pola ke nama file di direktori saat ini. Paling-paling, ini tidak akan melakukan apa yang Anda harapkan; paling buruk, Anda bisa menggunakan tumpukan yang tidak Anda inginkan. Ini tidak sepenuhnya diperlukan di Windows karena cmd.exe
tidak memperluas wildcard, tetapi tetap merupakan praktik yang baik.
cdk synth "*Stack" # PipelineStack, LambdaStack, etc. cdk synth 'Stack?' # StackA, StackB, Stack1, etc. cdk synth \* # All stacks in the app, or all top-level stacks in a CDK Pipelines app cdk synth '**' # All stacks in a CDK Pipelines app cdk synth 'PipelineStack/Prod/**' # All stacks in Prod stage in a CDK Pipelines app
catatan
Urutan di mana Anda menentukan tumpukan belum tentu urutan di mana mereka akan diproses. The CDK CLI memperhitungkan dependensi antar tumpukan saat memutuskan urutan untuk memprosesnya. Sebagai contoh, katakanlah satu tumpukan menggunakan nilai yang dihasilkan oleh yang lain (seperti sumber daya yang didefinisikan dalam tumpukan kedua). ARN Dalam hal ini, tumpukan kedua disintesis sebelum yang pertama karena ketergantungan ini. Anda dapat menambahkan dependensi antar tumpukan secara manual menggunakan metode tumpukan. addDependency()
Bootstrap AWS lingkungan Anda
Menyebarkan tumpukan dengan CDK membutuhkan AWS CDK sumber daya khusus khusus untuk disediakan. cdk
bootstrap
Perintah menciptakan sumber daya yang diperlukan untuk Anda. Anda hanya perlu bootstrap jika Anda menerapkan tumpukan yang membutuhkan sumber daya khusus ini. Lihat AWS CDK bootstrap untuk detail.
cdk bootstrap
Jika dikeluarkan tanpa argumen, seperti yang ditunjukkan di sini, cdk bootstrap
perintah mensintesis aplikasi saat ini dan bootstrap lingkungan tempat tumpukannya akan digunakan. Jika aplikasi berisi tumpukan agnostik lingkungan, yang tidak secara eksplisit menentukan lingkungan, akun default dan Wilayah akan di-bootstrap, atau lingkungan yang ditentukan menggunakan. --profile
Di luar aplikasi, Anda harus secara eksplisit menentukan lingkungan yang akan di-bootstrap. Anda juga dapat melakukannya untuk mem-bootstrap lingkungan yang tidak ditentukan dalam aplikasi atau AWS profil lokal Anda. Kredensil harus dikonfigurasi (misalnya dalam~/.aws/credentials
) untuk akun dan Wilayah yang ditentukan. Anda dapat menentukan profil yang berisi kredensil yang diperlukan.
cdk bootstrap
ACCOUNT-NUMBER
/REGION
# e.g. cdk bootstrap 1111111111/us-east-1 cdk bootstrap --profile test 1111111111/us-east-1
penting
Setiap lingkungan (kombinasi akun/wilayah) tempat Anda menerapkan tumpukan semacam itu harus di-bootstrap secara terpisah.
Anda mungkin dikenakan AWS biaya untuk apa yang AWS CDK disimpan di sumber daya bootstrap. Selain itu, jika Anda menggunakan-bootstrap-customer-key
, AWS KMS kunci akan dibuat, yang juga dikenakan biaya per lingkungan.
catatan
Versi sebelumnya dari template bootstrap membuat KMS kunci secara default. Untuk menghindari biaya, re-bootstrap menggunakan--no-bootstrap-customer-key
.
catatan
CDK CLI v2 tidak mendukung template bootstrap asli, dijuluki template lama, digunakan secara default dengan v1. CDK
penting
Template bootstrap modern secara efektif memberikan izin yang tersirat oleh --cloudformation-execution-policies
ke AWS akun mana pun dalam daftar. --trust
Secara default, ini memperluas izin untuk membaca dan menulis ke sumber daya apa pun di akun bootstrap. Pastikan untuk mengonfigurasi tumpukan bootstrap dengan kebijakan dan akun tepercaya yang nyaman bagi Anda.
Buat aplikasi baru
Untuk membuat aplikasi baru, buat direktori untuknya, lalu, di dalam direktori, keluarkancdk init
.
mkdir my-cdk-app cd my-cdk-app cdk init
TEMPLATE
--languageLANGUAGE
Bahasa yang didukung (LANGUAGE
) adalah:
Kode |
Bahasa |
---|---|
|
TypeScript |
|
JavaScript |
|
Python |
|
Java |
|
C# |
TEMPLATE
adalah template opsional. Jika template yang diinginkan adalah aplikasi, default, Anda dapat menghilangkannya. Template yang tersedia adalah:
Templat |
Deskripsi |
---|---|
|
Membuat AWS CDK aplikasi kosong. |
|
Membuat AWS CDK aplikasi dengan tumpukan yang berisi SQS antrian Amazon dan SNS topik Amazon. |
Template menggunakan nama folder project untuk menghasilkan nama file dan class di dalam aplikasi baru Anda.
Daftar tumpukan
Untuk melihat daftar IDs tumpukan dalam AWS CDK aplikasi Anda, masukkan salah satu perintah setara berikut:
cdk list cdk ls
Jika aplikasi Anda berisi tumpukan CDKPipelines, CDK CLI menampilkan nama tumpukan sebagai jalur sesuai dengan lokasinya dalam hierarki pipeline. (Misalnya,PipelineStack
,PipelineStack/Prod
, danPipelineStack/Prod/MyService
.)
Jika aplikasi berisi banyak tumpukan, Anda dapat menentukan tumpukan penuh atau sebagian IDs dari tumpukan yang akan dicantumkan. Untuk informasi selengkapnya, lihat Tentukan tumpukan.
Tambahkan --long
bendera untuk melihat informasi lebih lanjut tentang tumpukan, termasuk nama tumpukan dan lingkungannya (AWS akun dan Wilayah).
Sintesis tumpukan
cdk synthesize
Perintah (hampir selalu disingkatsynth
) mensintesis tumpukan yang ditentukan dalam aplikasi Anda ke dalam template. CloudFormation
cdk synth # if app contains only one stack cdk synth MyStack cdk synth Stack1 Stack2 cdk synth "*" # all stacks in app
catatan
The CDK CLI benar-benar menjalankan aplikasi Anda dan mensintesis template baru sebelum sebagian besar operasi (seperti saat menerapkan atau membandingkan tumpukan). Template ini disimpan secara default di cdk.out
direktori. cdk synth
Perintah hanya mencetak template yang dihasilkan untuk satu atau lebih tumpukan tertentu.
Lihat cdk synth --help
untuk semua opsi yang tersedia. Beberapa opsi yang paling sering digunakan tercakup dalam bagian berikut.
Tentukan nilai konteks
Gunakan -c
opsi --context
or untuk meneruskan nilai konteks runtime ke CDK aplikasi Anda.
# specify a single context value cdk synth --context key=value MyStack # specify multiple context values (any number) cdk synth --context key1=value1 --context key2=value2 MyStack
Saat menerapkan beberapa tumpukan, nilai konteks yang ditentukan biasanya diteruskan ke semuanya. Jika mau, Anda dapat menentukan nilai yang berbeda untuk setiap tumpukan dengan mengawali nama tumpukan ke nilai konteks.
# different context values for each stack cdk synth --context Stack1:key=value Stack2:key=value Stack1 Stack2
Tentukan format tampilan
Secara default, template yang disintesis ditampilkan dalam YAML format. Tambahkan --json
bendera untuk menampilkannya dalam JSON format sebagai gantinya.
cdk synth --json MyStack
Tentukan direktori output
Tambahkan opsi --output
(-o
) untuk menulis template yang disintesis ke direktori selaincdk.out
.
cdk synth --output=~/templates
Menyebarkan tumpukan
cdk deploy
Subperintah menyebarkan satu atau beberapa tumpukan tertentu ke akun Anda. AWS
cdk deploy # if app contains only one stack cdk deploy MyStack cdk deploy Stack1 Stack2 cdk deploy "*" # all stacks in app
catatan
The CDK CLI menjalankan aplikasi Anda dan mensintesis AWS CloudFormation template baru sebelum menerapkan apa pun. Oleh karena itu, sebagian besar opsi baris perintah yang dapat Anda gunakan cdk synth
(misalnya,--context
) juga dapat digunakancdk deploy
.
Lihat cdk deploy --help
untuk semua opsi yang tersedia. Beberapa opsi yang paling berguna tercakup dalam bagian berikut.
Lewati sintesis
cdk deployPerintah biasanya mensintesis tumpukan aplikasi Anda sebelum menerapkan untuk memastikan bahwa penerapan mencerminkan versi terbaru aplikasi Anda. Jika Anda tahu bahwa Anda belum mengubah kode sejak terakhircdk synth, Anda dapat menekan langkah sintesis yang berlebihan saat menerapkan. Untuk melakukannya, tentukan cdk.out
direktori proyek Anda di --app opsi.
cdk deploy --app cdk.out StackOne StackTwo
Nonaktifkan rollback
AWS CloudFormation memiliki kemampuan untuk memutar kembali perubahan sehingga penerapan bersifat atomik. Ini berarti bahwa mereka berhasil atau gagal secara keseluruhan. AWS CDK Mewarisi kemampuan ini karena mensintesis dan menyebarkan AWS CloudFormation template.
Rollback memastikan bahwa sumber daya Anda berada dalam keadaan konsisten setiap saat, yang sangat penting untuk tumpukan produksi. Namun, saat Anda masih mengembangkan infrastruktur, beberapa kegagalan tidak dapat dihindari, dan memutar kembali penerapan yang gagal dapat memperlambat Anda.
Untuk alasan ini, CDK CLI memungkinkan Anda menonaktifkan rollback dengan menambahkan --no-rollback
ke perintah Andacdk deploy
. Dengan flag ini, penerapan yang gagal tidak dibatalkan. Sebagai gantinya, sumber daya yang digunakan sebelum sumber daya yang gagal tetap ada, dan penerapan berikutnya dimulai dengan sumber daya yang gagal. Anda akan menghabiskan lebih sedikit waktu menunggu penerapan dan lebih banyak waktu mengembangkan infrastruktur Anda.
Bertukar-tukar panas
Gunakan --hotswap
tanda dengan cdk deploy
untuk mencoba memperbarui AWS sumber daya Anda secara langsung alih-alih membuat set AWS CloudFormation perubahan dan menerapkannya. Penerapan kembali ke AWS CloudFormation penerapan jika hot swapping tidak memungkinkan.
Saat ini hot swapping mendukung fungsi Lambda, mesin status Step Functions, dan image container Amazon. ECS --hotswap
Bendera juga menonaktifkan rollback (yaitu, menyiratkan). --no-rollback
penting
Hot-swapping tidak disarankan untuk penerapan produksi.
Modus menonton
The CDK CLImode tontonan (cdk deploy --watch, atau cdk watch singkatnya) terus memantau file sumber dan aset CDK aplikasi Anda untuk perubahan. Ini segera melakukan penyebaran tumpukan yang ditentukan ketika perubahan terdeteksi.
Secara default, penerapan ini menggunakan --hotswap
flag, yang mempercepat penyebaran perubahan pada fungsi Lambda. Itu juga kembali ke penerapan AWS CloudFormation jika Anda telah mengubah konfigurasi infrastruktur. Agar cdk watch
selalu melakukan AWS CloudFormation penerapan penuh, tambahkan --no-hotswap
bendera ke. cdk watch
Setiap perubahan yang cdk watch
dibuat saat sudah melakukan penerapan digabungkan menjadi satu penerapan, yang dimulai segera setelah penerapan yang sedang berlangsung selesai.
Mode menonton menggunakan "watch"
kunci dalam proyek cdk.json
untuk menentukan file mana yang akan dipantau. Secara default, file-file ini adalah file dan aset aplikasi Anda, tetapi ini dapat diubah dengan memodifikasi "include"
dan "exclude"
entri di "watch"
kunci. cdk.json
File berikut menunjukkan contoh entri ini.
{ "app": "mvn -e -q compile exec:java", "watch": { "include": "src/main/**", "exclude": "target/*" } }
cdk watch
mengeksekusi "build"
perintah dari cdk.json
untuk membangun aplikasi Anda sebelum sintesis. Jika penerapan Anda memerlukan perintah apa pun untuk membuat atau mengemas kode Lambda Anda (atau apa pun yang tidak ada di aplikasi CDK Anda), tambahkan di sini.
Wildcard bergaya Git, keduanya *
dan**
, dapat digunakan di tombol dan. "watch"
"build"
Setiap jalur ditafsirkan relatif terhadap direktori induk. cdk.json
Nilai default include
adalah**/*
, yang berarti semua file dan direktori di direktori root proyek. exclude
adalah opsional.
penting
Mode tontonan tidak disarankan untuk penerapan produksi.
Tentukan AWS CloudFormation parameter
The CDK CLI mendukung menentukan AWS CloudFormation parameter pada penerapan. Anda dapat memberikan ini pada baris perintah mengikuti --parameters
bendera.
cdk deploy MyStack --parameters uploadBucketName=UploadBucket
Untuk menentukan beberapa parameter, gunakan beberapa --parameters
bendera.
cdk deploy MyStack --parameters uploadBucketName=UpBucket --parameters downloadBucketName=DownBucket
Jika Anda menerapkan beberapa tumpukan, Anda dapat menentukan nilai yang berbeda dari setiap parameter untuk setiap tumpukan. Untuk melakukannya, awali nama parameter dengan nama tumpukan dan titik dua. Jika tidak, nilai yang sama diteruskan ke semua tumpukan.
cdk deploy MyStack YourStack --parameters MyStack:uploadBucketName=UploadBucket --parameters YourStack:uploadBucketName=UpBucket
Secara default, AWS CDK mempertahankan nilai parameter dari penerapan sebelumnya dan menggunakannya dalam penerapan selanjutnya jika tidak ditentukan secara eksplisit. Gunakan --no-previous-parameters
bendera untuk meminta semua parameter ditentukan.
Tentukan file output
Jika tumpukan Anda mendeklarasikan AWS CloudFormation output, ini biasanya ditampilkan di layar pada akhir penerapan. Untuk menulisnya ke file dalam JSON format, gunakan --outputs-file
bendera.
cdk deploy --outputs-file outputs.json MyStack
Menyetujui perubahan terkait keamanan
Untuk melindungi Anda dari perubahan yang tidak diinginkan yang memengaruhi postur keamanan Anda, CDK CLI meminta Anda untuk menyetujui perubahan terkait keamanan sebelum menerapkannya. Anda dapat menentukan tingkat perubahan yang memerlukan persetujuan:
cdk deploy --require-approval
LEVEL
LEVEL
bisa menjadi salah satu dari berikut ini:
Jangka Waktu |
Arti |
---|---|
|
Persetujuan tidak pernah diperlukan |
|
Memerlukan persetujuan atas setiap IAM atau security-group-related perubahan |
|
Memerlukan persetujuan ketika IAM pernyataan atau peraturan lalu lintas ditambahkan; penghapusan tidak memerlukan persetujuan |
Pengaturan juga dapat dikonfigurasi dalam cdk.json
file.
{ "app": "...", "requireApproval": "never" }
Bandingkan tumpukan
cdk diff
Perintah membandingkan versi stack saat ini (dan dependensinya) yang ditentukan di aplikasi Anda dengan versi yang sudah di-deploy, atau dengan AWS CloudFormation template yang disimpan, dan menampilkan daftar perubahan.
Stack HelloCdkStack IAM Statement Changes ┌───┬──────────────────────────────┬────────┬──────────────────────────────┬──────────────────────────────┬───────────┐ │ │ Resource │ Effect │ Action │ Principal │ Condition │ ├───┼──────────────────────────────┼────────┼──────────────────────────────┼──────────────────────────────┼───────────┤ │ + │ ${Custom::S3AutoDeleteObject │ Allow │ sts:AssumeRole │ Service:lambda.amazonaws.com │ │ │ │ sCustomResourceProvider/Role │ │ │ │ │ │ │ .Arn} │ │ │ │ │ ├───┼──────────────────────────────┼────────┼──────────────────────────────┼──────────────────────────────┼───────────┤ │ + │ ${MyFirstBucket.Arn} │ Allow │ s3:DeleteObject* │ AWS:${Custom::S3AutoDeleteOb │ │ │ │ ${MyFirstBucket.Arn}/* │ │ s3:GetBucket* │ jectsCustomResourceProvider/ │ │ │ │ │ │ s3:GetObject* │ Role.Arn} │ │ │ │ │ │ s3:List* │ │ │ └───┴──────────────────────────────┴────────┴──────────────────────────────┴──────────────────────────────┴───────────┘ IAM Policy Changes ┌───┬────────────────────────────────────────────────────────┬────────────────────────────────────────────────────────┐ │ │ Resource │ Managed Policy ARN │ ├───┼────────────────────────────────────────────────────────┼────────────────────────────────────────────────────────┤ │ + │ ${Custom::S3AutoDeleteObjectsCustomResourceProvider/Ro │ {"Fn::Sub":"arn:${AWS::Partition}:iam::aws:policy/serv │ │ │ le} │ ice-role/AWSLambdaBasicExecutionRole"} │ └───┴────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────┘ (NOTE: There may be security-related changes not in this list. See https://github.com/aws/aws-cdk/issues/1299) Parameters [+] Parameter AssetParameters/4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392/S3Bucket AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3BucketBF7A7F3F: {"Type":"String","Description":"S3 bucket for asset \"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\""} [+] Parameter AssetParameters/4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392/S3VersionKey AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392S3VersionKeyFAF93626: {"Type":"String","Description":"S3 key for asset version \"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\""} [+] Parameter AssetParameters/4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392/ArtifactHash AssetParameters4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392ArtifactHashE56CD69A: {"Type":"String","Description":"Artifact hash for asset \"4cd61014b71160e8c66fe167e43710d5ba068b80b134e9bd84508cf9238b2392\""} Resources [+] AWS::S3::BucketPolicy MyFirstBucket/Policy MyFirstBucketPolicy3243DEFD [+] Custom::S3AutoDeleteObjects MyFirstBucket/AutoDeleteObjectsCustomResource MyFirstBucketAutoDeleteObjectsCustomResourceC52FCF6E [+] AWS::IAM::Role Custom::S3AutoDeleteObjectsCustomResourceProvider/Role CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092 [+] AWS::Lambda::Function Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F [~] AWS::S3::Bucket MyFirstBucket MyFirstBucketB8884501 ├─ [~] DeletionPolicy │ ├─ [-] Retain │ └─ [+] Delete └─ [~] UpdateReplacePolicy ├─ [-] Retain └─ [+] Delete
Untuk membandingkan tumpukan aplikasi Anda dengan penerapan yang ada:
cdk diff MyStack
Untuk membandingkan tumpukan aplikasi Anda dengan CloudFormation templat yang disimpan:
cdk diff --template ~/stacks/MyStack.old MyStack
Impor sumber daya yang ada ke dalam tumpukan
Anda dapat menggunakan cdk import
perintah untuk membawa sumber daya di bawah pengelolaan CloudFormation untuk AWS CDK tumpukan tertentu. Ini berguna jika Anda bermigrasi ke AWS CDK, atau memindahkan sumber daya antar tumpukan atau mengubah id logisnya. cdk import
menggunakan impor CloudFormation sumber daya. Lihat daftar sumber daya yang dapat diimpor di sini.
Untuk mengimpor sumber daya yang ada ke dalam AWS CDK tumpukan, ikuti langkah-langkah berikut:
-
Pastikan sumber daya saat ini tidak dikelola oleh CloudFormation tumpukan lain. Jika ya, pertama-tama setel kebijakan penghapusan ke
RemovalPolicy.RETAIN
tumpukan sumber daya saat ini dan lakukan penerapan. Kemudian, hapus sumber daya dari tumpukan dan lakukan penerapan lain. Proses ini akan memastikan bahwa sumber daya tidak lagi dikelola oleh CloudFormation tetapi tidak menghapusnya. -
Jalankan a
cdk diff
untuk memastikan tidak ada perubahan yang tertunda pada AWS CDK tumpukan yang ingin Anda impor sumber daya. Satu-satunya perubahan yang diizinkan dalam operasi “impor” adalah penambahan sumber daya baru yang ingin Anda impor. -
Tambahkan konstruksi untuk sumber daya yang ingin Anda impor ke tumpukan Anda. Misalnya, jika Anda ingin mengimpor bucket Amazon S3, tambahkan sesuatu seperti.
new s3.Bucket(this, 'ImportedS3Bucket', {});
Jangan membuat modifikasi apa pun pada sumber daya lain.Anda juga harus memastikan untuk secara tepat memodelkan status yang dimiliki sumber daya saat ini ke dalam definisi. Untuk contoh bucket, pastikan untuk menyertakan AWS KMS kunci, kebijakan siklus hidup, dan hal lain yang relevan tentang bucket. Jika tidak, operasi pembaruan berikutnya mungkin tidak melakukan apa yang Anda harapkan.
Anda dapat memilih apakah akan menyertakan nama bucket fisik atau tidak. Kami biasanya menyarankan untuk tidak memasukkan nama sumber daya ke dalam definisi AWS CDK sumber daya Anda sehingga menjadi lebih mudah untuk menyebarkan sumber daya Anda beberapa kali.
-
Jalankan
cdk import
.STACKNAME
-
Jika nama sumber daya tidak ada dalam model Anda, CLI akan meminta Anda untuk meneruskan nama sebenarnya dari sumber daya yang Anda impor. Setelah ini, impor dimulai.
-
Ketika
cdk import
melaporkan keberhasilan, sumber daya sekarang dikelola oleh AWS CDK dan CloudFormation. Setiap perubahan berikutnya yang Anda buat pada properti resource di AWS CDK aplikasi Anda, konfigurasi build akan diterapkan pada penerapan berikutnya. -
Untuk mengonfirmasi bahwa definisi sumber daya di AWS CDK aplikasi Anda cocok dengan status sumber daya saat ini, Anda dapat memulai operasi deteksi CloudFormation drift.
Fitur ini saat ini tidak mendukung pengimporan sumber daya ke tumpukan bersarang.
Konfigurasi (cdk.json
)
Nilai default untuk banyak CDK CLI Bendera baris perintah dapat disimpan dalam cdk.json
file proyek atau dalam .cdk.json
file di direktori pengguna Anda. Berikut ini adalah referensi abjad ke pengaturan konfigurasi yang didukung.
Kunci | Catatan | CDK CLI pilihan |
---|---|---|
app |
Perintah yang menjalankan CDK aplikasi. | --app |
assetMetadata |
Jikafalse , CDK tidak menambahkan metadata ke sumber daya yang menggunakan aset. |
--no-asset-metadata |
bootstrapKmsKeyId |
Mengganti ID AWS KMS kunci yang digunakan untuk mengenkripsi bucket penerapan Amazon S3. | --bootstrap-kms-key-id |
build |
Perintah yang mengkompilasi atau membangun CDK aplikasi sebelum sintesis. Tidak diizinkan masuk~/.cdk.json . |
--build |
browser |
Perintah untuk meluncurkan browser Web untuk cdk docs subperintah. |
--browser |
context |
Lihat Nilai konteks dan AWS CDK. Nilai konteks dalam file konfigurasi tidak akan dihapus olehcdk
context --clear. (CDK CLI menempatkan nilai konteks yang di-cache dicdk.context.json .) |
--context |
debug |
Jikatrue , CDK CLI memancarkan informasi lebih rinci yang berguna untuk debugging. |
--debug |
language |
Bahasa yang akan digunakan untuk menginisialisasi proyek baru. | --language |
lookups |
Jikafalse , tidak ada pencarian konteks yang diizinkan. Sintesis akan gagal jika ada pencarian konteks yang perlu dilakukan. |
--no-lookups |
notices |
Jikafalse , menekan tampilan pesan tentang kerentanan keamanan, regresi, dan versi yang tidak didukung. |
--no-notices |
output |
Nama direktori tempat perakitan cloud yang disintesis akan dipancarkan (default). "cdk.out" |
--output |
outputsFile |
File yang AWS CloudFormation output dari tumpukan yang digunakan akan ditulis (dalam JSON format). | --outputs-file |
pathMetadata |
Jikafalse , metadata CDK jalur tidak ditambahkan ke templat yang disintesis. |
--no-path-metadata |
plugin |
JSONarray yang menentukan nama paket atau jalur lokal paket yang memperluas CDK | --plugin |
profile |
Nama AWS profil default yang digunakan untuk menentukan Wilayah dan kredensil akun. | --profile |
progress |
Jika diatur ke"events" , CDK CLI menampilkan semua AWS CloudFormation peristiwa selama penerapan, bukan bilah kemajuan. |
--progress |
requireApproval |
Tingkat persetujuan default untuk perubahan keamanan. Lihat Menyetujui perubahan terkait keamanan | --require-approval |
rollback |
Jikafalse , penerapan yang gagal tidak dibatalkan. |
--no-rollback |
staging |
Jikafalse , aset tidak disalin ke direktori output (gunakan untuk debugging lokal dari file sumber dengan AWS SAM). |
--no-staging |
tags |
JSONobjek yang berisi tag (pasangan kunci-nilai) untuk tumpukan. | --tags |
toolkitBucketName |
Nama bucket Amazon S3 yang digunakan untuk menyebarkan aset seperti fungsi Lambda dan gambar kontainer (lihat. Bootstrap AWS lingkungan Anda | --toolkit-bucket-name |
toolkitStackName |
Nama tumpukan bootstrap (lihatBootstrap AWS lingkungan Anda. | --toolkit-stack-name |
versionReporting |
Jikafalse , memilih keluar dari pelaporan versi. |
--no-version-reporting |
watch |
JSONobjek yang berisi "include" dan "exclude" kunci yang menunjukkan file mana yang harus (atau tidak boleh) memicu pembangunan kembali proyek saat diubah. Lihat Modus menonton. |
--watch |