

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 Referensi CDK CLI
<a name="cli"></a>

 AWS Cloud Development Kit (AWS CDK) Command Line Interface (AWS CDK CLI), juga dikenal sebagai CDK Toolkit, adalah alat utama untuk berinteraksi dengan aplikasi CDK Anda. AWS Ini mengeksekusi aplikasi Anda, menginterogasi model aplikasi yang Anda tentukan, dan menghasilkan dan menyebarkan AWS CloudFormation template yang dihasilkan oleh CDK. AWS Ini juga menyediakan fitur lain yang berguna untuk membuat dan bekerja dengan proyek AWS CDK. Topik ini berisi informasi tentang kasus penggunaan umum CDK CLI.

CDK CLI diinstal dengan Manajer Paket Node. Dalam kebanyakan kasus, kami sarankan 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 dari CDK CLI di masing-masing proyek CDK. 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.

## Perintah CDK CLI
<a name="cli-commands"></a>

Semua perintah CDK CLI dimulai dengan`cdk`, 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, lihat referensi perintah [AWS CDK CLI. ](ref-cli-cmd.md)

## Tentukan opsi dan nilainya
<a name="cli-options"></a>

Opsi baris perintah dimulai dengan dua tanda hubung ()`--`. Beberapa opsi yang sering digunakan memiliki sinonim huruf tunggal yang dimulai dengan tanda hubung tunggal (misalnya, `--app` memiliki sinonim`-a`). Urutan opsi dalam perintah CDK CLI tidak penting.

Semua opsi menerima nilai, yang harus mengikuti nama opsi. Nilai dapat dipisahkan dari nama dengan spasi putih atau dengan tanda sama`=`. Dua opsi berikut setara.

```
--toolkit-stack-name MyBootstrapStack
--toolkit-stack-name=MyBootstrapStack
```

Beberapa opsi adalah flag (Booleans). Anda dapat menentukan `true` atau `false` sebagai nilainya. Jika Anda tidak memberikan nilai, nilainya dianggap sebagai`true`. Anda juga dapat menawali nama opsi dengan `no-` menyiratkan`false`.

```
# 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 ke `[array]` tik dalam bantuan CDK CLI. Contoh:

```
cdk bootstrap --tags costCenter=0123 --tags responsibleParty=jdoe
```

## Built-in membantu
<a name="cli-help"></a>

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, misalnya`deploy`, tentukan sebelum `--help` bendera.

```
cdk deploy --help
```

Masalah `cdk version` untuk menampilkan versi CDK CLI. Berikan informasi ini saat meminta dukungan.

## Pelaporan versi
<a name="version-reporting"></a>

Untuk mendapatkan wawasan tentang bagaimana AWS CDK digunakan, konstruksi yang digunakan oleh aplikasi AWS CDK dikumpulkan dan dilaporkan dengan menggunakan sumber daya yang diidentifikasi sebagai. ` AWS::CDK::Metadata` Untuk mempelajari selengkapnya, lihat Meng [ onfigurasi pelaporan ](usage-data.md) data penggunaan AWS CDK.

## Otentikasi dengan AWS
<a name="cli-auth"></a>

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 dan mengonfigurasinya untuk CLI CDK, lihat Meng [ onfigurasi kredentif keamanan untuk CLI AWS CDK. ](configure-access.md)

Pendekatan yang disarankan untuk pengguna baru yang berkembang secara lokal, yang tidak diberi metode otentikasi oleh majikan mereka, adalah dengan menyiapkan Pusat Identi AWS tas IAM. 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 Identitas [ IAM ](https://docs.aws.amazon.com/sdkref/latest/guide/access-sso.html) di Panduan Refer * AWS ensi SDK dan Alat: *
+  AWS CLI, yang Anda gunakan untuk memulai sesi portal AWS akses sebelum menjalankan aplikasi Anda.
+ File AWS konfigurasi [ bersama yang ](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) memiliki `[default]` profil dengan satu set nilai konfigurasi yang dapat direferensikan dari AWS CDK. Untuk menemukan lokasi file ini, lihat [ Lokasi file bersama ](https://docs.aws.amazon.com/sdkref/latest/guide/file-location.html) di Panduan * Refer * AWS ensi SDK dan Alat.
+ `config`File bersama mengatur [ pengaturan ](https://docs.aws.amazon.com/sdkref/latest/guide/feature-region.html) wilayah. Ini menetapkan Wil AWS ayah default yang digunakan AWS CDK dan CDK CLI untuk permintaan. AWS 
+ CDK CLI menggunakan konfigurasi penyedia token [ SSO profil ](https://docs.aws.amazon.com/sdkref/latest/guide/feature-sso-credentials.html#feature-sso-credentials-profile) untuk memperoleh kredenSIAL sebelum mengirim permintaan ke. AWS`sso_role_name`Nilai, yang merupakan peran IAM yang terhubung ke kumpulan izin Pusat Identitas IAM, harus memungkinkan akses ke AWS layanan yang digunakan dalam aplikasi Anda.

  `config`File contoh berikut menunjukkan profil default yang diatur dengan konfigurasi penyedia token SSO. Peng `sso_session` aturan profil mengacu pada [`sso-session` bagian bernama](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html#section-session). `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-session <my-sso>]
  sso_region = <us-east-1>
  sso_start_url = <https://provided-domain.awsapps.com/start>
  sso_registration_scopes = sso:account:access
  ```

### Mulai sebuah AWS akses sesi portal
<a name="accessportal"></a>

Sebelum mengakses AWS layanan, Anda memerlukan sesi portal AWS akses aktif agar CLI CDK menggunakan otentikasi Pusat Identitas IAM untuk menyelesaikan kredensional. Tergantung pada panjang sesi yang dikonfigurasi, akses Anda akhirnya akan kedaluwarsa dan CLI CDK akan mengalami kesalahan otentikasi. Jalankan perintah berikut di AWS CLI untuk masuk ke portal AWS akses.

```
aws sso login
```

Jika konfigurasi penyedia token SSO Anda menggunakan profil bernama alih-alih profil default, perintahnya adalah`aws sso login --profile <NAME>`. Juga tentukan profil ini saat mengeluarkan `cdk` perintah menggunakan `--profile` opsi atau variabel `AWS_PROFILE` lingkungan.

Untuk menguji apakah Anda sudah memiliki sesi aktif, jalankan perintah AWS CLI berikut.

```
aws sts get-caller-identity
```

Respons terhadap perintah ini harus melaporkan akun Pusat Identitas IAM dan kumpulan izin yang dikonfigurasi dalam `config` file bersama.

**catatan**  
Jika Anda sudah memiliki sesi portal AWS akses aktif dan menjalankannya`aws sso login`, Anda tidak akan diminta untuk memberikan kredenSIAL.  
Proses masuk dapat meminta Anda untuk mengizinkan akses AWS CLI ke data Anda. Karena AWS CLI dibangun di atas SDK untuk Python, pesan izin mungkin berisi variasi `botocore` nama.

## Tentukan Wilayah dan konfigurasi lainnya
<a name="cli-environment"></a>

CDK CLI perlu mengetahui Wil AWS ayah tempat Anda menyebarkan dan cara mengotentikasi. 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 SDK. CDK CLI mencari informasi ini dalam urutan berikut.
+ Vari `AWS_DEFAULT_REGION` abel lingkungan.
+ Profil bernama didefinisikan dalam AWS `config` file standar dan ditentukan menggunakan `--profile` opsi pada `cdk` perintah.
+ `[default]`Bagian dari AWS `config` file standar.

Selain menentukan AWS otentikasi dan Wilayah di `[default]` bagian, Anda juga dapat menambahkan satu atau lebih `[profile <NAME>]` bagian, di mana `<NAME>` adalah nama profil. Untuk informasi selengkapnya tentang profil bernama, lihat file konfigurasi dan kredenSIAL [ bersama ](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) di Panduan * Referensi * AWS SDK 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 kredenSIAL bersama ](https://docs.aws.amazon.com/sdkref/latest/guide/file-location.html) di Panduan Refer * AWS ensi SDK dan Alat * 

Lingkungan yang Anda tentukan di aplikasi AWS CDK Anda dengan menggunakan `env` properti stack digunakan selama sintesis. Ini digunakan untuk menghasilkan AWS CloudFormation template khusus lingkungan, dan selama penerapan, itu menggantikan akun atau Wilayah yang ditentukan oleh salah satu metode sebelumnya. Untuk informasi selengkapnya, lihat [ Lingkungan untuk AWS CDK](environments.md).

**catatan**  
 AWS CDK menggunakan kredenSIAL dari file sumber yang sama dengan AWS alat dan SDK lainnya, termasuk [AWS Command Line Interface. ](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) Namun, AWS CDK mungkin berperilaku agak berbeda dari alat-alat ini. Ini menggunakan AWS SDK untuk JavaScript di bawah kap. Untuk detail lengkap tentang menyiapkan kredenSIAL untuk AWS SDK untuk JavaScript, lihat [ Menyetel kredenSIAL](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-credentials.html).

Anda dapat secara opsional menggunakan opsi `--role-arn` (atau`-r`) untuk menentukan ARN dari peran IAM yang harus digunakan untuk penerapan. Peran ini harus diasumsikan oleh AWS akun yang digunakan.

## Tentukan perintah aplikasi
<a name="cli-app-command"></a>

Banyak fitur CDK CLI memerlukan satu atau lebih AWS CloudFormation template disintesis, yang pada gilirannya memerlukan menjalankan aplikasi Anda. AWS CDK mendukung program 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 dengan dua cara.

Pertama, dan paling umum, dapat ditentukan menggunakan `app` kunci di dalam file`cdk.json`. Ini ada di direktori utama proyek AWS CDK Anda. CDK CLI memberikan perintah yang sesuai saat membuat proyek baru dengan. `cdk init` Berikut ini `cdk.json` dari TypeScript proyek baru, misalnya.

```
{
  "app": "npx ts-node bin/hello-cdk.ts"
}
```

CLI CDK mencari `cdk.json` di direktori kerja saat ini ketika mencoba menjalankan aplikasi Anda. Karena itu, Anda mungkin membiarkan shell terbuka di direktori utama proyek Anda untuk mengeluarkan perintah CDK CLI.

CDK CLI juga mencari kunci aplikasi di `~/.cdk.json` (yaitu, di direktori home Anda) jika tidak dapat menemukannya di. `./cdk.json` Menambahkan perintah aplikasi di sini dapat berguna jika Anda biasanya bekerja dengan kode CDK dalam bahasa yang sama.

Jika Anda berada di direktori lain, atau untuk menjalankan aplikasi menggunakan perintah selain perintah yang ada di`cdk.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`cdk.out`, seperti, sebagai nilai`--app`. Tumpukan yang ditentukan digunakan dari direktori ini; aplikasi tidak disintesis.

## Tentukan tumpukan
<a name="cli-stacks"></a>

Banyak perintah CDK CLI (misalnya,`cdk deploy`) bekerja pada tumpukan yang ditentukan di aplikasi Anda. Jika aplikasi Anda hanya berisi satu tumpukan, CLI CDK mengasumsikan Anda berarti itu jika Anda tidak menentukan tumpukan secara eksplisit.

Jika tidak, Anda harus menentukan tumpukan atau tumpukan yang ingin Anda gunakan. Anda dapat melakukan ini dengan menentukan tumpukan yang diinginkan berdasarkan ID secara individual pada baris perintah. Ingatlah bahwa ID adalah nilai yang ditentukan oleh argumen kedua saat Anda membuat instance tumpukan.

```
cdk synth PipelineStack LambdaStack
```

Anda juga dapat menggunakan wildcard untuk menentukan ID 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 [ CDK Pipelines](cdk-pipeline.md), 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 digunakan `**` untuk menunjukkan semua tumpukan di bawah hierarki tertentu.

Saat menggunakan wildcard, lampirkan pola dalam tanda kutip, atau hindari wildcard dengan. `\` Jika tidak, shell Anda mungkin mencoba memperluas pola ke nama-nama file di direktori saat ini. Paling-paling, ini tidak akan melakukan apa yang Anda harapkan; paling buruk, Anda dapat menerapkan 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. CDK CLI memperhitungkan dependensi antara tumpukan saat memutuskan urutan untuk memprosesnya. Sebagai contoh, katakanlah bahwa satu tumpukan menggunakan nilai yang dihasilkan oleh yang lain (seperti ARN dari sumber daya yang ditentukan dalam tumpukan kedua). Dalam hal ini, tumpukan kedua disintesis sebelum yang pertama karena ketergantungan ini. Anda dapat menambahkan dependensi antar tumpukan secara manual menggunakan metode stack. ` [addDependency()](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.Stack.html#addwbrdependencytarget-reason) `

## Bootstrap Anda AWS lingkungan
<a name="cli-bootstrap"></a>

Menyebarkan tumpukan dengan CDK memerlukan sumber daya AWS CDK khusus khusus untuk disediakan. Per `cdk bootstrap` intah menciptakan sumber daya yang diperlukan untuk Anda. Anda hanya perlu melakukan bootstrap jika Anda menerapkan tumpukan yang membutuhkan sumber daya khusus ini. Lihat bootstrap [AWS CDK untuk detailnya. ](bootstrapping.md)

```
cdk bootstrap
```

Jika dikeluarkan tanpa argumen, seperti yang ditunjukkan di sini, `cdk bootstrap` perintah mensintesis aplikasi saat ini dan mem-bootstrap lingkungan tempat tumpukannya akan digunakan. Jika aplikasi berisi tumpukan agnostik lingkungan, yang tidak secara eksplisit menentukan lingkungan, akun default dan Wilayah 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 di aplikasi atau AWS profil lokal Anda. KredenSIAL harus dikonfigurasi (misalnya di`~/.aws/credentials`) untuk akun dan Wilayah yang ditentukan. Anda dapat menentukan profil yang berisi kredenSIAL 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 (account/region kombinasi) tempat Anda menerapkan tumpukan semacam itu harus di-bootstrap secara terpisah.

Anda mungkin dikenakan AWS biaya untuk apa yang disimpan AWS CDK di sumber daya bootstrap. Selain itu, jika Anda menggunakan`--bootstrap-customer-key`, kunci AWS KMS akan dibuat, yang juga dikenakan biaya per lingkungan.

**catatan**  
Versi sebelumnya dari template bootstrap membuat kunci KMS secara default. Untuk menghindari biaya, lakukan bootstrap ulang. `--no-bootstrap-customer-key`

**catatan**  
CDK CLI v2 tidak mendukung template bootstrap asli, dijuluki template lama, digunakan secara default dengan CDK v1.

**penting**  
Template bootstrap modern secara efektif memberikan izin yang tersirat oleh `--cloudformation-execution-policies` ke AWS akun mana pun dalam `--trust` daftar. Secara default, ini memperluas izin untuk membaca dan menulis ke sumber daya apa pun di akun bootstrap. Pastikan untuk [ mengonfigurasi tumpukan bootstrap ](bootstrapping-customizing.md) dengan kebijakan dan akun tepercaya yang membuat Anda nyaman.

## Buat aplikasi baru
<a name="cli-init"></a>

Untuk membuat aplikasi baru, buat direktori untuknya, lalu, di dalam direktori, keluarkan`cdk init`.

```
mkdir my-cdk-app
cd my-cdk-app
cdk init <TEMPLATE> --language <LANGUAGE>
```

Bahasa yang didukung (<LANGUAGE>) adalah:


| Kode | Bahasa | 
| --- | --- | 
|  `typescript`  | TypeScript | 
|  `javascript`  | JavaScript | 
|  `python`  | Python | 
|  `java`  | Java | 
|  `csharp`  | C\# | 
|  `Go`  | Go | 

<TEMPLATE>adalah template opsional. Jika template yang diinginkan adalah * aplikasi*, default, Anda dapat menghilangkannya. Template yang tersedia adalah:


| Templat | Deskripsi | 
| --- | --- | 
|  `app`(default) | Membuat aplikasi AWS CDK kosong. | 
|  `sample-app`  | Membuat aplikasi AWS CDK dengan tumpukan yang berisi antrian Amazon SQS dan topik Amazon SNS. | 

Template menggunakan nama folder proyek untuk menghasilkan nama file dan kelas di dalam aplikasi baru Anda.

## Daftar tumpukan
<a name="cli-list"></a>

Untuk melihat daftar ID tumpukan di aplikasi AWS CDK Anda, masukkan salah satu perintah setara berikut:

```
cdk list
cdk ls
```

Jika aplikasi Anda berisi tumpukan [ CDK Pi ](cdk-pipeline.md) pelines, CDK CLI menampilkan nama tumpukan sebagai jalur sesuai dengan lokasinya dalam hierarki pipeline. (Misalnya,`PipelineStack`,`PipelineStack/Prod`, dan`PipelineStack/Prod/MyService`.)

Jika aplikasi Anda berisi banyak tumpukan, Anda dapat menentukan ID tumpukan penuh atau sebagian dari tumpukan yang akan dicantumkan. Untuk informasi selengkapnya, lihat Men [ entukan tumpukan. ](#cli-stacks)

Tambahkan `--long` bendera untuk melihat informasi selengkapnya tentang tumpukan, termasuk nama tumpukan dan lingkungannya (AWS akun dan Wilayah).

## Mensintesis tumpukan
<a name="cli-synth"></a>

Per `cdk synthesize` intah (hampir selalu disingkat`synth`) mensintesis tumpukan yang ditentukan dalam aplikasi Anda menjadi CloudFormation template.

```
cdk synth         # if app contains only one stack
cdk synth MyStack
cdk synth Stack1 Stack2
cdk synth "*"     # all stacks in app
```

**catatan**  
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. Per `cdk synth` intah hanya mencetak template yang dihasilkan untuk satu atau lebih tumpukan tertentu.

Lihat `cdk synth --help` semua opsi yang tersedia. Beberapa opsi yang paling sering digunakan tercakup dalam bagian berikut.

### Tentukan nilai konteks
<a name="cli-specify-context"></a>

Gunakan `-c` opsi `--context` atau untuk meneruskan [ nilai konteks ](context.md) runtime ke aplikasi CDK 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
<a name="cli-specify-format"></a>

Secara default, template yang disintesis ditampilkan dalam format YAML. Tambahkan `--json` bendera untuk menampilkannya dalam format JSON sebagai gantinya.

```
cdk synth --json MyStack
```

### Tentukan direktori output
<a name="cli-specify-output"></a>

Tambahkan opsi `--output` (`-o`) untuk menulis templat yang disintesis ke direktori selain`cdk.out`.

```
cdk synth --output=~/templates
```

## Terapkan tumpukan
<a name="cli-deploy"></a>

`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**  
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 dengan `cdk synth` (misalnya,`--context`) juga dapat digunakan dengan`cdk deploy`.

Lihat `cdk deploy --help` semua opsi yang tersedia. Beberapa opsi yang paling berguna tercakup dalam bagian berikut.

### Lewati sintesis
<a name="cli-deploy-nosynth"></a>

Per `cdk deploy` intah ini biasanya mensintesis tumpukan aplikasi Anda sebelum digunakan untuk memastikan penerapan mencerminkan versi terbaru aplikasi Anda. Jika Anda tahu bahwa Anda belum mengubah kode Anda sejak terakhir`cdk synth`, Anda dapat menekan langkah sintesis redundan saat menerapkan. Untuk melakukannya, tentukan `cdk.out` direktori proyek Anda di `--app` opsi.

```
cdk deploy --app cdk.out StackOne StackTwo
```

### Nonaktifkan rollback
<a name="cli-deploy-norollback"></a>

 AWS CloudFormation memiliki kemampuan untuk mengembalikan perubahan sehingga penyebaran bersifat atom. Ini berarti bahwa mereka berhasil atau gagal secara keseluruhan. AWS CDK mewarisi kemampuan ini karena mensintesis dan menyebarkan template. AWS CloudFormation 

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 mengembalikan penerapan yang gagal dapat memperlambat Anda.

Untuk alasan ini, CDK CLI memungkinkan Anda menonaktifkan rollback dengan menambahkan `--no-rollback` perintah Anda. `cdk deploy` Dengan bendera ini, penerapan yang gagal tidak dibatalkan. Sebaliknya, 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 untuk mengembangkan infrastruktur Anda.

### Penukaran panas
<a name="cli-deploy-hotswap"></a>

Gunakan `--hotswap` flag with `cdk deploy` untuk mencoba memperbarui AWS sumber daya Anda secara langsung alih-alih membuat set AWS CloudFormation perubahan dan menyebarkannya. Penerapan akan kembali ke AWS CloudFormation penerapan jika hot swap tidak memungkinkan.

Saat ini hot swap mendukung fungsi Lambda, mesin status Fungsi Langkah, dan gambar wadah Amazon ECS. `--hotswap`Bendera juga menonaktifkan rollback (yaitu, menyiratkan`--no-rollback`).

**penting**  
Hot-swapping tidak direkomendasikan untuk penerapan produksi.

### Mode Tonton
<a name="cli-deploy-watch"></a>

Mode tontonan CDK CLI (`cdk deploy --watch`, atau sing `cdk watch` katnya) terus memantau file sumber dan aset aplikasi CDK 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. Ini juga kembali ke penerapan AWS CloudFormation jika Anda telah mengubah konfigurasi infrastruktur. Agar `cdk watch` selalu melakukan penerapan AWS CloudFormation penuh, tambahkan `--no-hotswap` bendera ke. `cdk watch`

Setiap perubahan yang dilakukan saat `cdk watch` sedang melakukan penerapan digabungkan menjadi satu penerapan, yang dimulai segera setelah penerapan yang sedang berlangsung selesai.

Mode tontonan menggunakan `"watch"` kunci dalam proyek `cdk.json` untuk menentukan file mana yang akan dipantau. Secara default, file-file ini adalah file aplikasi dan aset Anda, tetapi ini dapat diubah dengan memodifikasi `"exclude"` entri `"include"` dan 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`menjalankan `"build"` perintah dari `cdk.json` untuk membangun aplikasi Anda sebelum sintesis. Jika penerapan Anda memerlukan perintah apa pun untuk membangun atau mengemas kode Lambda Anda (atau apa pun yang tidak ada di aplikasi CDK Anda), tambahkan di sini.

Git-style wildcard, keduanya `*` dan`**`, dapat digunakan di `"build"` kunci `"watch"` dan. Setiap jalur ditafsirkan relatif terhadap direktori induk dari`cdk.json`. Nilai default `include` adalah`**/*`, yang berarti semua file dan direktori di direktori root proyek. `exclude`bersifat opsional.

**penting**  
Mode tontonan tidak disarankan untuk penerapan produksi.

### Tentukan AWS CloudFormation parameter
<a name="cli-specify-parameters"></a>

CDK CLI mendukung AWS CloudFormation [ parameter yang ditentukan ](parameters.md) saat penerapan. Anda dapat memberikan ini pada baris perintah setelah ben `--parameters` dera.

```
cdk deploy MyStack --parameters uploadBucketName=UploadBucket
```

Untuk menentukan beberapa parameter, gunakan beberapa `--parameters` flag.

```
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 ben `--no-previous-parameters` dera untuk meminta semua parameter ditentukan.

### Tentukan file output
<a name="cli-specify-outputs-file"></a>

Jika tumpukan Anda mendeklarasikan AWS CloudFormation output, ini biasanya ditampilkan di layar pada akhir penerapan. Untuk menuliskannya ke file dalam format JSON, gunakan ben `--outputs-file` dera.

```
cdk deploy --outputs-file outputs.json MyStack
```

### Menyetujui perubahan terkait keamanan
<a name="cli-security"></a>

Untuk melindungi Anda dari perubahan yang tidak diinginkan yang dapat memengaruhi postur keamanan Anda, CDK CLI secara default meminta Anda untuk menyetujui perubahan terkait keamanan sebelum menerapkannya. Anda dapat menentukan tingkat perubahan yang memerlukan persetujuan:

```
cdk deploy --require-approval <LEVEL>
```

 `<LEVEL>` dapat berupa salah satu status berikut:


| Jangka Waktu | Arti | 
| --- | --- | 
|  `never`  | Persetujuan tidak pernah diperlukan | 
|  `any-change`  | Memerlukan persetujuan untuk setiap perubahan pada tumpukan | 
|  `broadening`(default) | Memerlukan persetujuan jika perubahan melibatkan perluasan izin atau aturan grup keamanan | 

Pengaturan juga dapat dikonfigurasi dalam `cdk.json` file.

```
{
  "app": "...",
  "requireApproval": "never"
}
```

## Bandingkan tumpukan
<a name="cli-diff"></a>

Per `cdk diff` intah membandingkan versi tumpukan saat ini (dan dependensinya) yang ditentukan di aplikasi Anda dengan versi yang sudah digunakan, atau dengan AWS CloudFormation templat 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
<a name="cli-import"></a>

Anda dapat menggunakan `cdk import` perintah untuk membawa sumber daya di bawah pengelolaan CloudFormation untuk tumpukan AWS CDK tertentu. Ini berguna jika Anda bermigrasi ke AWS CDK, atau memindahkan sumber daya antar tumpukan atau mengubah id logiknya. `cdk import` menggunakan [ CloudFormation impor sumber daya. ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resource-import.html) Lihat [ daftar sumber daya yang dapat diimpor di sini](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resource-import-supported-resources.html).

Untuk mengimpor sumber daya yang ada ke tumpukan AWS CDK, ikuti langkah-langkah berikut:
+ Pastikan sumber daya saat ini tidak dikelola oleh CloudFormation tumpukan lain. Jika ya, pertama-tama atur kebijakan penghapusan ke `RemovalPolicy.RETAIN` dalam tumpukan sumber daya saat ini berada 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 tumpukan AWS CDK 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 lainnya.

  Anda juga harus memastikan untuk memodelkan secara tepat status yang dimiliki sumber daya saat ini ke dalam definisi. Untuk contoh bucket, pastikan untuk menyertakan kunci AWS KMS, 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 sumber daya AWS CDK Anda sehingga menjadi lebih mudah untuk menerapkan 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 selanjutnya yang Anda buat pada properti sumber daya di aplikasi AWS CDK Anda, konfigurasi konstruksi akan diterapkan pada penerapan berikutnya.
+ Untuk mengonfirmasi bahwa definisi sumber daya di aplikasi AWS CDK Anda cocok dengan status sumber daya saat ini, Anda dapat memulai operasi [ deteksi peny ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-stack-drift.html) CloudFormation impangan.

Fitur ini saat ini tidak mendukung impor sumber daya ke tumpukan bersarang.

## Konfigurasi (`cdk.json`)
<a name="cli-config"></a>

Nilai default untuk banyak flag baris perintah CDK CLI dapat disimpan dalam file proyek atau dalam `cdk.json` file di `.cdk.json` direktori pengguna Anda. Berikut ini adalah referensi abjad ke pengaturan konfigurasi yang didukung.


| Key | Catatan | Opsi CDK CLI | 
| --- | --- | --- | 
|  `app`  | Perintah yang mengeksekusi aplikasi CDK. |  `--app`  | 
|  `assetMetadata`  | Jika`false`, CDK tidak menambahkan metadata ke sumber daya yang menggunakan aset. |  `--no-asset-metadata`  | 
|  `bootstrapKmsKeyId`  | Mengganti ID kunci AWS KMS yang digunakan untuk mengenkripsi bucket penerapan Amazon S3. |  `--bootstrap-kms-key-id`  | 
|  `build`  | Perintah yang mengkompilasi atau membangun aplikasi CDK 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](context.md). Nilai konteks dalam file konfigurasi tidak akan dihapus oleh`cdk context --clear`. (CDK CLI menempatkan nilai konteks yang di-cache di.) `cdk.context.json` |  `--context`  | 
|  `debug`  | Jika`true`, CDK CLI memancarkan informasi lebih rinci yang berguna untuk debugging. |  `--debug`  | 
|  `language`  | Bahasa yang akan digunakan untuk menginisialisasi proyek baru. |  `--language`  | 
|  `lookups`  | Jika`false`, tidak ada pencarian konteks yang diizinkan. Sintesis akan gagal jika ada pencarian konteks yang perlu dilakukan. |  `--no-lookups`  | 
|  `notices`  | Jika`false`, 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 keluaran dari tumpukan yang digunakan akan ditulis (dalam `JSON` format). |  `--outputs-file`  | 
|  `pathMetadata`  | Jika`false`, metadata jalur CDK tidak ditambahkan ke templat yang disintesis. |  `--no-path-metadata`  | 
|  `plugin`  | JSON array yang menentukan nama paket atau jalur lokal paket yang memperluas CDK |  `--plugin`  | 
|  `profile`  | Nama AWS profil default yang digunakan untuk menentukan Wilayah dan kredenSIAL akun. |  `--profile`  | 
|  `progress`  | Jika diset `"events"` el ke, CDK CLI menampilkan semua AWS CloudFormation peristiwa selama penerapan, bukan bilah kemajuan. |  `--progress`  | 
|  `requireApproval`  | Tingkat persetujuan default untuk perubahan yang memerlukan persetujuan manual. Lihat Men [ yetujui perubahan terkait keamanan. ](#cli-security) |  `--require-approval`  | 
|  `rollback`  | Jika`false`, penerapan yang gagal tidak dibatalkan. |  `--no-rollback`  | 
|  `staging`  | Jika`false`, aset tidak disalin ke direktori output (gunakan untuk debugging lokal file sumber dengan AWS SAM). |  `--no-staging`  | 
|  `tags`  |  `JSON`objek yang berisi tag (pasangan kunci-nilai) untuk tumpukan. |  `--tags`  | 
|  `toolkitBucketName`  | Nama bucket Amazon S3 yang digunakan untuk menerapkan aset seperti fungsi Lambda dan gambar kontainer (lihat [ Bootstrap lingkungan Anda AWS ). ](#cli-bootstrap) |  `--toolkit-bucket-name`  | 
|  `toolkitStackName`  | Nama tumpukan bootstrap (lihat [ Bootstrap AWS lingkungan ](#cli-bootstrap) Anda). |  `--toolkit-stack-name`  | 
|  `versionReporting`  | Jika`false`, memilih keluar dari pelaporan versi. |  `--no-version-reporting`  | 
|  `watch`  | Objek JSON yang berisi `"include"` dan `"exclude"` kunci yang menunjukkan file mana yang harus (atau tidak seharusnya) memicu pembangunan kembali proyek ketika diubah. Lihat Mode [ Tonton](#cli-deploy-watch). |  `--watch`  | 