

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.

# Bootstrap lingkungan Anda untuk digunakan dengan AWS CDK
<a name="bootstrapping-env"></a>

Bootstrap AWS lingkungan Anda untuk mempersiapkannya untuk penyebaran tumpukan AWS Cloud Development Kit (AWS CDK).
+ Untuk pengenalan lingkungan, lihat [Lingkungan untuk AWS CDK](environments.md).
+ [Untuk pengantar bootstrap, lihat AWS Bootstrapping CDK.](bootstrapping.md)

## Cara bootstrap lingkungan Anda
<a name="bootstrapping-howto"></a>

Anda dapat menggunakan AWS CDK Command Line Interface (AWS CDK CLI) atau alat AWS CloudFormation penyebaran pilihan Anda untuk bootstrap lingkungan Anda.<a name="bootstrapping-howto-cli"></a>

 **Gunakan CDK CLI**   
Anda dapat menggunakan perintah CDK `cdk bootstrap` CLI untuk mem-bootstrap lingkungan Anda. Ini adalah metode yang kami sarankan jika Anda tidak memerlukan modifikasi signifikan untuk bootstrap.    
 **Bootstrap dari direktori kerja apa pun**   
Untuk bootstrap dari direktori kerja apa pun, sediakan lingkungan untuk bootstrap sebagai argumen baris perintah. Berikut ini adalah contohnya:  

```
$ cdk bootstrap <aws://123456789012/us-east-1>
```
Jika Anda tidak memiliki nomor AWS akun, Anda bisa mendapatkannya dari AWS Management Console. Anda juga dapat menggunakan perintah AWS CLI berikut untuk menampilkan informasi akun default Anda, termasuk nomor akun Anda:  

```
$ aws sts get-caller-identity
```
Jika Anda telah menamai profil di `credentials` file AWS `config` dan Anda, gunakan `--profile` opsi untuk mengambil informasi akun untuk profil tertentu. Berikut ini adalah contohnya:  

```
$ aws sts get-caller-identity --profile <prod>
```
Untuk menampilkan Region default, gunakan `aws configure get` perintah:  

```
$ aws configure get region
$ aws configure get region --profile <prod>
```
Saat memberikan argumen, `aws://` awalan adalah opsional. Berikut ini valid:  

```
$ cdk bootstrap <123456789012/us-east-1>
```
Untuk mem-bootstrap beberapa lingkungan secara bersamaan, berikan beberapa argumen:  

```
$ cdk bootstrap <aws://123456789012/us-east-1> <aws://123456789012/us-east-2>
```  
 **Bootstrap dari direktori induk proyek CDK**   
Anda dapat menjalankan `cdk bootstrap` dari direktori induk proyek CDK yang berisi `cdk.json` file. Jika Anda tidak menyediakan lingkungan sebagai argumen, CDK CLI akan memperoleh informasi lingkungan dari sumber default, seperti file `credentials` dan `config` Anda atau informasi lingkungan apa pun yang ditentukan untuk tumpukan CDK Anda.  
Saat Anda mem-bootstrap dari direktori induk proyek CDK, lingkungan yang disediakan dari argumen baris perintah lebih diutamakan daripada sumber lain.  
Untuk bootstrap lingkungan yang ditentukan dalam `credentials` file `config` dan Anda, gunakan `--profile` opsi:  

```
$ cdk bootstrap --profile <prod>
```
Untuk informasi selengkapnya tentang `cdk bootstrap` perintah dan opsi yang didukung, lihat [cdk bootstrap](ref-cli-cmd-bootstrap.md).<a name="bootstrapping-howto-cfn"></a>

 **Gunakan AWS CloudFormation alat apa saja**   
Anda dapat menyalin [template bootstrap](https://github.com/aws/aws-cdk-cli/blob/main/packages/aws-cdk/lib/api/bootstrap/bootstrap-template.yaml) dari *aws-cdk-cli GitHub repositori* atau mendapatkan template dengan perintah. `cdk bootstrap --show-template` Kemudian, gunakan AWS CloudFormation alat apa pun untuk menyebarkan template ke lingkungan Anda.  
Dengan metode ini, Anda dapat menggunakan AWS CloudFormation StackSets atau AWS Control Tower. Anda juga dapat menggunakan AWS CloudFormation konsol atau antarmuka baris AWS perintah (AWS CLI). Anda dapat membuat modifikasi pada template Anda sebelum Anda menerapkannya. Metode ini mungkin lebih fleksibel dan cocok untuk penyebaran skala besar.  
Berikut ini adalah contoh penggunaan `--show-template` opsi untuk mengambil dan menyimpan template bootstrap ke mesin lokal Anda:  

**Example**  

```
$ cdk bootstrap --show-template > bootstrap-template.yaml
```
Pada Windows, PowerShell harus digunakan untuk melestarikan pengkodean template.  

```
powershell "cdk bootstrap --show-template | Out-File -encoding utf8 bootstrap-template.yaml"
```
Jika pemberitahuan CDK muncul di output AWS CloudFormation template Anda, berikan `--no-notices` opsi dengan perintah Anda.
Untuk menerapkan template ini menggunakan CDK CLI, Anda dapat menjalankan yang berikut:  

```
$ cdk bootstrap --template <bootstrap-template.yaml>
```
Berikut ini adalah contoh penggunaan AWS CLI untuk menyebarkan template:  

**Example**  

```
aws cloudformation create-stack \
  --stack-name CDKToolkit \
  --template-body file://<path/to/>bootstrap-template.yaml \
  --capabilities CAPABILITY_NAMED_IAM \
  --region <us-west-1>
```

```
aws cloudformation create-stack ^
  --stack-name CDKToolkit ^
  --template-body file://<path/to/>bootstrap-template.yaml ^
  --capabilities CAPABILITY_NAMED_IAM ^
  --region <us-west-1>
```
Untuk informasi tentang penggunaan CloudFormation StackSets untuk mem-bootstrap beberapa lingkungan, lihat [Bootstrapping beberapa AWS akun untuk AWS CDK yang digunakan CloudFormation StackSets](https://aws.amazon.com/blogs/mt/bootstrapping-multiple-aws-accounts-for-aws-cdk-using-cloudformation-stacksets/) di Blog *Operasi & Migrasi AWS Cloud*.

## Kapan harus bootstrap lingkungan Anda
<a name="bootstrapping-env-when"></a>

Anda harus mem-bootstrap setiap AWS lingkungan sebelum Anda menyebarkan ke lingkungan. Kami menyarankan Anda secara proaktif mem-bootstrap setiap lingkungan yang Anda rencanakan untuk digunakan. Anda dapat melakukan ini sebelum Anda berencana untuk benar-benar menerapkan aplikasi CDK ke lingkungan. Dengan mem-bootstrap lingkungan secara proaktif, Anda mencegah potensi masalah masa depan seperti konflik nama bucket Amazon S3 atau menerapkan aplikasi CDK ke lingkungan yang belum di-bootstrap.

Tidak apa-apa untuk mem-bootstrap lingkungan lebih dari sekali. Jika lingkungan telah di-bootstrap, tumpukan bootstrap akan ditingkatkan jika perlu. Kalau tidak, tidak akan terjadi apa-apa.

Jika Anda mencoba menerapkan tumpukan CDK ke lingkungan yang belum di-bootstrap, Anda akan melihat kesalahan seperti berikut:

```
$ cdk deploy

✨  Synthesis time: 2.02s

 ❌ Deployment failed: Error: BootstrapExampleStack: SSM parameter /cdk-bootstrap/hnb659fds/version not found. Has the environment been bootstrapped? Please run 'cdk bootstrap' (see https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html)
```<a name="bootstrapping-env-when-update"></a>

 **Perbarui tumpukan bootstrap Anda**   
Secara berkala, tim CDK akan memperbarui template bootstrap ke versi baru. Ketika ini terjadi, kami sarankan Anda memperbarui tumpukan bootstrap Anda. Jika Anda belum menyesuaikan proses bootstrap, Anda dapat memperbarui tumpukan bootstrap Anda dengan mengikuti langkah-langkah yang sama yang Anda ambil untuk mem-bootstrap lingkungan Anda. Untuk informasi selengkapnya, lihat [Riwayat versi template Bootstrap](#bootstrap-template-history).

## Sumber daya default dibuat selama bootstrap
<a name="bootstrapping-env-default"></a><a name="bootstrapping-env-roles"></a>

 **Peran IAM dibuat selama bootstrap**   
Secara default, bootstrap menyediakan peran AWS Identity and Access Management (IAM) berikut di lingkungan Anda:  
+  `CloudFormationExecutionRole` 
+  `DeploymentActionRole` 
+  `FilePublishingRole` 
+  `ImagePublishingRole` 
+  `LookupRole` <a name="bootstrapping-env-roles-cfn"></a>  
 `CloudFormationExecutionRole`   
Peran IAM ini adalah peran CloudFormation layanan yang memberikan CloudFormation izin untuk melakukan penerapan tumpukan atas nama Anda. Peran ini memberikan CloudFormation izin untuk melakukan panggilan AWS API di akun Anda, termasuk menerapkan tumpukan.  
Dengan menggunakan peran layanan, izin yang disediakan untuk peran layanan menentukan tindakan apa yang dapat dilakukan pada sumber daya Anda. CloudFormation Tanpa peran layanan ini, kredensi keamanan yang Anda berikan dengan CDK CLI akan menentukan CloudFormation apa yang diizinkan untuk dilakukan.  
 `DeploymentActionRole`   
Peran IAM ini memberikan izin untuk melakukan penerapan ke lingkungan Anda. Ini diasumsikan oleh CDK CLI selama penerapan.  
Dengan menggunakan peran untuk penerapan, Anda dapat melakukan penerapan lintas akun karena peran tersebut dapat diasumsikan oleh AWS identitas di akun yang berbeda.  
 `FilePublishingRole`   
Peran IAM ini memberikan izin untuk melakukan tindakan terhadap bucket Amazon Simple Storage Service (Amazon S3) yang di-bootstrap, termasuk mengunggah dan menghapus aset. Ini diasumsikan oleh CDK CLI selama penerapan.  
 `ImagePublishingRole`   
Peran IAM ini memberikan izin untuk melakukan tindakan terhadap repositori Amazon Elastic Container Registry (Amazon ECR) bootstrapped. Ini diasumsikan oleh CDK CLI selama penerapan.  
 `LookupRole`   
Peran IAM ini memberikan `readOnly` izin untuk mencari [nilai konteks](context.md) dari lingkungan. AWS Hal ini diasumsikan oleh CDK CLI saat melakukan tugas-tugas seperti sintesis template dan penerapan.<a name="bootstrapping-env-default-id"></a>

 **Sumber daya IDs dibuat selama bootstrap**   
Saat Anda menerapkan template bootstrap default, fisik IDs untuk sumber daya bootstrap dibuat menggunakan struktur berikut:`cdk-<qualifier>-<description>-<account-ID>-<Region>`.  
+  **Qualifier** - Nilai string unik sembilan karakter dari. `hnb659fds` Nilai sebenarnya tidak memiliki signifikansi.
+  **Deskripsi** — Deskripsi singkat tentang sumber daya. Misalnya, `container-assets`.
+  **ID Akun** — ID AWS akun lingkungan.
+  **Wilayah** — AWS Wilayah lingkungan.
Berikut ini adalah contoh ID fisik bucket pementasan Amazon S3 yang dibuat selama bootstrap:. `cdk-hnb659fds-assets-012345678910-us-west-1`

## Izin untuk digunakan saat bootstrap lingkungan Anda
<a name="bootstrapping-env-permissions"></a>

Saat melakukan bootstrap AWS lingkungan, identitas IAM yang melakukan bootstrap harus memiliki setidaknya izin berikut:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudformation:*",
                "ecr:*",
                "ssm:*",
                "s3:*",
                "iam:*"
            ],
            "Resource": "*"
        }
    ]
}
```

Seiring waktu, tumpukan bootstrap, termasuk sumber daya yang dibuat dan izin yang mereka butuhkan, dapat berubah. Dengan perubahan future, Anda mungkin perlu memodifikasi izin yang diperlukan untuk mem-bootstrap lingkungan.

## Sesuaikan bootstrap
<a name="bootstrapping-env-customize"></a>

Jika template bootstrap default tidak sesuai dengan kebutuhan Anda, Anda dapat menyesuaikan bootstrap sumber daya ke lingkungan Anda dengan cara berikut:
+ Gunakan opsi baris perintah dengan `cdk bootstrap` perintah — Metode ini paling baik untuk membuat perubahan kecil dan spesifik yang didukung melalui opsi baris perintah.
+ Ubah template bootstrap default dan terapkan - Metode ini paling baik untuk membuat perubahan kompleks atau jika Anda ingin kontrol penuh atas konfigurasi sumber daya yang disediakan selama bootstrap.

[Untuk informasi selengkapnya tentang menyesuaikan bootstrap, lihat Menyesuaikan bootstrap CDK. AWS](bootstrapping-customizing.md)

## Bootstrapping dengan CDK Pipelines
<a name="bootstrapping-env-pipelines"></a>

Jika Anda menggunakan CDK Pipelines untuk menyebarkan ke lingkungan akun lain, dan Anda menerima pesan seperti berikut:

```
Policy contains a statement with one or more invalid principals
```

Pesan kesalahan ini berarti bahwa peran IAM yang sesuai tidak ada di lingkungan lain. Penyebab yang paling mungkin adalah bahwa lingkungan belum di-bootstrap. Bootstrap lingkungan dan coba lagi.<a name="bootstrapping-env-pipelines-protect"></a>

 **Melindungi tumpukan bootstrap Anda dari penghapusan**   
Jika tumpukan bootstrap dihapus, AWS sumber daya yang awalnya disediakan di lingkungan untuk mendukung penerapan CDK juga akan dihapus. Ini akan menyebabkan pipa berhenti bekerja. Jika ini terjadi, tidak ada solusi umum untuk pemulihan.  
Setelah lingkungan Anda di-bootstrap, jangan hapus dan buat ulang tumpukan bootstrap lingkungan. Sebagai gantinya, coba perbarui tumpukan bootstrap ke versi baru dengan menjalankan `cdk bootstrap` perintah lagi.  
Untuk melindungi dari penghapusan tumpukan bootstrap Anda secara tidak sengaja, kami sarankan Anda memberikan `--termination-protection` opsi dengan `cdk bootstrap` perintah untuk mengaktifkan perlindungan terminasi. Anda dapat mengaktifkan perlindungan terminasi pada tumpukan bootstrap baru atau yang sudah ada. Untuk petunjuk tentang mengaktifkan perlindungan terminasi, lihat [Mengaktifkan perlindungan terminasi untuk tumpukan bootstrap](bootstrapping-customizing.md#bootstrapping-customizing-cli-protection).

## Riwayat versi template bootstrap
<a name="bootstrap-template-history"></a>

Template bootstrap berversi dan berkembang seiring waktu dengan CDK itu AWS sendiri. Jika Anda menyediakan template bootstrap Anda sendiri, tetap up to date dengan template default kanonik. Anda ingin memastikan bahwa template Anda terus bekerja dengan semua fitur CDK.

**catatan**  
Versi sebelumnya dari template bootstrap membuat kunci AWS KMS di setiap lingkungan bootstrap secara default. Untuk menghindari biaya untuk kunci KMS, bootstrap ulang lingkungan ini menggunakan. `--no-bootstrap-customer-key` Default saat ini tidak ada kunci KMS, yang membantu menghindari biaya ini.

Bagian ini berisi daftar perubahan yang dibuat di setiap versi.


| Versi template |  AWS Versi CDK | Perubahan | 
| --- | --- | --- | 
|   **1**   |  1.40.0  |  Versi awal template dengan Bucket, Key, Repository, dan Roles.  | 
|   **2**   |  1.45.0  |  Pisahkan peran penerbitan aset menjadi peran penerbitan file dan gambar yang terpisah.  | 
|   **3**   |  1.46.0  |  Tambahkan `FileAssetKeyArn` ekspor untuk dapat menambahkan izin dekripsi ke konsumen aset.  | 
|   **4**   |  1.61.0  |   AWS Izin KMS sekarang implisit melalui Amazon S3 dan tidak lagi diperlukan. `FileAssetKeyArn` Tambahkan parameter `CdkBootstrapVersion` SSM sehingga versi stack bootstrap dapat diverifikasi tanpa mengetahui nama tumpukan.  | 
|   **5**   |  1.87.0  |  Peran penyebaran dapat membaca parameter SSM.  | 
|   **6**   |  1.108.0  |  Tambahkan peran pencarian terpisah dari peran penerapan.  | 
|   **6**   |  1.109.0  |  Lampirkan `aws-cdk:bootstrap-role` tag ke peran penerapan, penerbitan file, dan penerbitan gambar.  | 
|   **7**   |  1.110.0  |  Peran penyebaran tidak dapat lagi membaca Bucket di akun target secara langsung. (Namun, peran ini secara efektif adalah administrator, dan selalu dapat menggunakan AWS CloudFormation izinnya untuk membuat bucket dapat dibaca).  | 
|   **8**   |  1.114.0  |  Peran pencarian memiliki izin hanya-baca penuh ke lingkungan target, dan memiliki `aws-cdk:bootstrap-role` tag juga.  | 
|   **9**   |  2.1.0  |  Memperbaiki unggahan aset Amazon S3 agar tidak ditolak oleh SCP enkripsi yang biasa direferensikan.  | 
|   **10**   |  2.4.0  |  Amazon ECR sekarang ScanOnPush diaktifkan secara default.  | 
|   **11**   |  2.18.0  |  Menambahkan kebijakan yang memungkinkan Lambda menarik dari repo ECR Amazon sehingga bertahan dari bootstrap ulang.  | 
|   **12**   |  2.20.0  |  Menambahkan dukungan untuk eksperimental`cdk import`.  | 
|   **13**   |  2.25.0  |  Membuat gambar kontainer di repositori Amazon ECR yang dibuat bootstrap tidak dapat diubah.  | 
|   **14**   |  2.34.0  |  Mematikan pemindaian gambar Amazon ECR di tingkat repositori secara default untuk memungkinkan bootstrapping Wilayah yang tidak mendukung pemindaian gambar.  | 
|   **15**   |  2.60.0  |  Kunci KMS tidak dapat ditandai.  | 
|   **16**   |  2.69.0  |  Alamat Security Hub menemukan [KMS.2](https://docs.aws.amazon.com/securityhub/latest/userguide/kms-controls.html#kms-2).  | 
|   **17**   |  2.72.0  |  Alamat Security Hub menemukan [ECR.3](https://docs.aws.amazon.com/securityhub/latest/userguide/ecr-controls.html#ecr-3).  | 
|   **18**   |  2.80.0  |  Perubahan yang dikembalikan dibuat untuk versi 16 karena tidak berfungsi di semua partisi dan tidak disarankan.  | 
|   **19**   |  2.106.1  |  Perubahan yang dikembalikan dibuat ke versi 18 di mana AccessControl properti telah dihapus dari template. ([\$127964](https://github.com/aws/aws-cdk/issues/27964))  | 
|   **20**   |  2.119.0  |  Tambahkan `ssm:GetParameters` tindakan ke peran IAM AWS CloudFormation penerapan. Untuk informasi selengkapnya, lihat [\$128336](https://github.com/aws/aws-cdk/pull/28336/files#diff-4fdac38426c4747aa17d515b01af4994d3d2f12c34f7b6655f24328259beb7bf).  | 
|   **21**   |  2.149.0  |  Tambahkan kondisi ke peran penerbitan file.  | 
|   **22**   |  2.160.0  |  Tambahkan `sts:TagSession` izin ke kebijakan kepercayaan peran IAM bootstrap.  | 
|   **23**   |  2.161.0  |  Tambahkan `cloudformation:RollbackStack` dan `cloudformation:ContinueUpdateRollback` izin ke kebijakan kepercayaan peran IAM penerapan. Ini memberikan izin untuk `cdk rollback` perintah.  | 
|   **24**   |  2.165.0  |  Ubah durasi hari dimana objek noncurrent dalam bucket bootstrap akan dipertahankan, dari 365 menjadi 30 hari. Karena `cdk gc` perintah baru memperkenalkan kemampuan untuk menghapus objek di bucket bootstrap, perilaku baru ini memastikan bahwa objek yang dihapus tetap berada di bucket bootstrap selama 30 hari, bukan 365 hari. Untuk informasi lebih lanjut tentang perubahan ini, lihat `aws-cdk` PR [\$131949](https://github.com/aws/aws-cdk/pull/31949).  | 
|   **25**   |  2.165.0  |  Tambahkan dukungan ke bucket bootstrap untuk menghapus unggahan multibagian yang tidak lengkap. Unggahan multipart yang tidak lengkap akan dihapus setelah 1 hari. Untuk informasi lebih lanjut tentang perubahan ini, lihat `aws-cdk` PR [\$131956](https://github.com/aws/aws-cdk/pull/31956).  | 
|   **26**   |  2.1002.0  |  Tambahkan dua kebijakan terkait penghapusan (`UpdateReplacePolicy`dan `DeletionPolicy` ke) sumber daya. `FileAssetsBucketEncryptionKey` Kebijakan ini memastikan bahwa sumber daya kunci AWS KMS lama akan dihapus dengan benar ketika tumpukan bootstrap diperbarui atau dihapus. Untuk informasi lebih lanjut tentang perubahan ini, lihat `aws-cdk-cli` PR [\$1100](https://github.com/aws/aws-cdk-cli/pull/100).  | 
|   **27**   |  2.1003.0  |  Tambahkan kebijakan sumber daya Amazon ECR baru untuk memberikan izin khusus Amazon EMR Tanpa Server untuk mengambil gambar kontainer. Untuk informasi lebih lanjut tentang perubahan ini, lihat `aws-cdk-cli` PR [\$1112](https://github.com/aws/aws-cdk-cli/pull/112).  | 
|   **28**   |  2.1015.0  |  Tambahkan izin untuk melakukan tindakan Stack Refactoring ke peran penerapan, dan TagSession izin ke semua peran. Untuk informasi lebih lanjut tentang perubahan ini, lihat `aws-cdk-cli` PR [\$1471](https://github.com/aws/aws-cdk-cli/pull/471).  | 
|   **29**   |  2.1026.0  |  Semua AssumeRole panggilan yang menyediakan ExternalId akan ditolak secara default, kecuali dinonaktifkan. Untuk informasi lebih lanjut tentang perubahan ini, lihat `aws-cdk-cli` PR [\$1811](https://github.com/aws/aws-cdk-cli/pull/811).  | 
|   **30**   |  2.1034.0  |  Tambahkan izin untuk menjelaskan peristiwa tumpukan ke peran penerapan, agar dapat menampilkan kesalahan Validasi CloudFormation Awal secara akurat. Untuk informasi lebih lanjut tentang perubahan ini, lihat `aws-cdk-cli` PR [\$1970](https://github.com/aws/aws-cdk-cli/pull/970).  | 

## Tingkatkan dari template bootstrap lama ke modern
<a name="bootstrapping-template"></a>

 AWS CDK v1 mendukung dua template bootstrap, legacy dan modern. CDK v2 hanya mendukung template modern. Sebagai referensi, berikut adalah perbedaan tingkat tinggi antara kedua templat ini.


| Fitur | Warisan (hanya v1) | Modern (v1 dan v2) | 
| --- | --- | --- | 
|   **Penerapan lintas akun**   |  Tidak diizinkan  |  Diizinkan  | 
|   ** AWS CloudFormation Izin**   |  Menyebarkan menggunakan izin pengguna saat ini (ditentukan oleh AWS profil, variabel lingkungan, dll.)  |  Menerapkan menggunakan izin yang ditentukan saat tumpukan bootstrap disediakan (misalnya, dengan menggunakan) `--trust`  | 
|   **Pembuatan Versi**   |  Hanya satu versi stack bootstrap yang tersedia  |  Bootstrap stack berversi; sumber daya baru dapat ditambahkan di versi future, dan aplikasi AWS CDK dapat memerlukan versi minimum  | 
|   **Sumber Daya\$1**   |  Buket Amazon S3  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/cdk/v2/guide/bootstrapping-env.html)  | 
|   ** AWS Kunci KMS**   |  Peran IAM  |  Repositori Amazon ECR  | 
|   **Penamaan sumber daya**   |  Dihasilkan secara otomatis  |  Deterministik  | 
|   **Enkripsi ember**   |  Kunci default  |   AWS kunci yang dikelola secara default. Anda dapat menyesuaikan untuk menggunakan kunci yang dikelola pelanggan.  | 
+  *Kami akan menambahkan sumber daya tambahan ke template bootstrap sesuai kebutuhan.* 

Lingkungan yang di-bootstrap menggunakan template lama harus ditingkatkan untuk menggunakan template modern untuk CDK v2 dengan melakukan bootstrapping ulang. Terapkan ulang semua aplikasi AWS CDK di lingkungan setidaknya sekali sebelum menghapus bucket lama.

## Alamat Temuan Security Hub
<a name="bootstrapping-securityhub"></a>

Jika Anda menggunakan AWS Security Hub, Anda mungkin melihat temuan yang dilaporkan pada beberapa sumber daya yang dibuat oleh proses AWS bootstrapping CDK. Temuan Security Hub membantu Anda menemukan konfigurasi sumber daya yang harus Anda periksa ulang untuk akurasi dan keamanannya. Kami telah meninjau konfigurasi sumber daya khusus ini dengan AWS Keamanan dan yakin itu bukan merupakan masalah keamanan.<a name="bootstrapping-securityhub-kms2"></a>

 **[KMS.2] Prinsipal IAM tidak boleh memiliki kebijakan inline IAM yang memungkinkan tindakan dekripsi pada semua kunci KMS**   
*Deploy role* (`DeploymentActionRole`) memberikan izin untuk membaca data terenkripsi, yang diperlukan untuk penerapan lintas akun dengan CDK Pipelines. Kebijakan dalam peran ini tidak memberikan izin untuk semua data. Ini hanya memberikan izin untuk membaca data terenkripsi dari Amazon S3 dan AWS KMS, dan hanya jika sumber daya tersebut mengizinkannya melalui bucket atau kebijakan kunci mereka.  
Berikut ini adalah cuplikan dari dua pernyataan ini dalam *peran penerapan dari template* bootstrap:  

```
DeploymentActionRole:
    Type: AWS::IAM::Role
    Properties:
      ...
      Policies:
        - PolicyDocument:
            Statement:
              ...
              - Sid: PipelineCrossAccountArtifactsBucket
                Effect: Allow
                Action:
                  - s3:GetObject*
                  - s3:GetBucket*
                  - s3:List*
                  - s3:Abort*
                  - s3:DeleteObject*
                  - s3:PutObject*
                Resource: "*"
                Condition:
                  StringNotEquals:
                    s3:ResourceAccount:
                      Ref: AWS::AccountId
              - Sid: PipelineCrossAccountArtifactsKey
                Effect: Allow
                Action:
                  - kms:Decrypt
                  - kms:DescribeKey
                  - kms:Encrypt
                  - kms:ReEncrypt*
                  - kms:GenerateDataKey*
                Resource: "*"
                Condition:
                  StringEquals:
                    kms:ViaService:
                      Fn::Sub: s3.${AWS::Region}.amazonaws.com
              ...
```<a name="bootstrapping-securityhub-kms2-why"></a>  
 **Mengapa Security Hub menandai ini?**   
Kebijakan berisi `Resource: *` gabungan dengan `Condition` klausa. Security Hub menandai `*` wildcard. Wildcard ini digunakan karena pada saat akun di-bootstrap, kunci AWS KMS yang dibuat oleh CDK Pipelines untuk bucket CodePipeline artefak belum ada, dan oleh karena itu, tidak dapat direferensikan pada template bootstrap oleh ARN. Selain itu, Security Hub tidak mempertimbangkan `Condition` klausa saat menaikkan bendera ini. Ini `Condition` membatasi permintaan `Resource: *` yang dibuat dari AWS akun kunci AWS KMS yang sama. Permintaan ini harus berasal dari Amazon S3 di AWS Wilayah yang sama dengan kunci AWS KMS.  
 **Apakah saya perlu memperbaiki temuan ini?**   
Selama Anda belum memodifikasi kunci AWS KMS pada template bootstrap Anda menjadi terlalu permisif, *peran penerapan* tidak memungkinkan lebih banyak akses daripada yang dibutuhkan. Oleh karena itu, tidak perlu memperbaiki temuan ini.  
 **Bagaimana jika saya ingin memperbaiki temuan ini?**   
Cara Anda memperbaiki temuan ini tergantung pada apakah Anda akan menggunakan CDK Pipelines untuk penerapan lintas akun atau tidak.    
 **Untuk memperbaiki pencarian Security Hub dan menggunakan CDK Pipelines untuk penerapan lintas akun**   

1. Jika Anda belum melakukannya, gunakan tumpukan bootstrap CDK menggunakan perintah. `cdk bootstrap`

1. Jika Anda belum melakukannya, buat dan terapkan Pipeline CDK Anda. Untuk petunjuk, lihat [Integrasi dan pengiriman berkelanjutan (CI/CD) menggunakan CDK Pipelines](cdk-pipeline.md).

1. Dapatkan ARN kunci AWS KMS dari ember CodePipeline artefak. Sumber daya ini dibuat selama pembuatan pipa.

1. Dapatkan salinan template bootstrap CDK untuk memodifikasinya. Berikut ini adalah contoh, menggunakan AWS CDK CLI:

   ```
   $ cdk bootstrap --show-template > bootstrap-template.yaml
   ```

1. Ubah template dengan mengganti `Resource: *` `PipelineCrossAccountArtifactsKey` pernyataan dengan nilai ARN Anda.

1. Terapkan template untuk memperbarui tumpukan bootstrap Anda. Berikut ini adalah contoh, menggunakan CDK CLI:

   ```
   $ cdk bootstrap aws://<account-id>/<region> --template bootstrap-template.yaml
   ```  
 **Untuk memperbaiki temuan Security Hub jika Anda tidak menggunakan CDK Pipelines untuk penerapan lintas akun**   

1. Dapatkan salinan template bootstrap CDK untuk memodifikasinya. Berikut ini adalah contoh, menggunakan CDK CLI:

   ```
   $ cdk bootstrap --show-template > bootstrap-template.yaml
   ```

1. Hapus `PipelineCrossAccountArtifactsKey` pernyataan `PipelineCrossAccountArtifactsBucket` dan dari template.

1. Terapkan template untuk memperbarui tumpukan bootstrap Anda. Berikut ini adalah contoh, menggunakan CDK CLI:

   ```
   $ cdk bootstrap aws://<account-id>/<region> --template bootstrap-template.yaml
   ```

## Pertimbangan-pertimbangan
<a name="bootstrapping-env-considerations"></a>

Karena bootstrap menyediakan sumber daya di lingkungan Anda, Anda mungkin dikenakan AWS biaya ketika sumber daya tersebut digunakan dengan CDK. AWS 