

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.

# Konfigurasikan konstruksi dengan CDK Blueprints
<a name="blueprints"></a>

Gunakan AWS CDK Blueprints untuk menstandarisasi dan mendistribusikan konfigurasi konstruksi L2 di seluruh organisasi Anda. Dengan Blueprints, Anda dapat memastikan bahwa AWS sumber daya dikonfigurasi secara konsisten sesuai dengan standar organisasi dan praktik terbaik Anda. Misalnya, Anda dapat mengaktifkan enkripsi secara otomatis untuk semua bucket Amazon S3, menerapkan konfigurasi logging tertentu ke semua fungsi AWS Lambda, atau menerapkan aturan keamanan standar untuk semua grup keamanan.

Cetak biru didukung oleh *injeksi properti*, mekanisme yang diperkenalkan di AWS CDK [v2.196.0](https://github.com/aws/aws-cdk/releases/tag/v2.196.0) yang memungkinkan Anda memodifikasi properti konstruksi pada waktu instantiasi. Blueprint adalah kumpulan injektor properti, di mana setiap injektor properti menentukan konfigurasi optimal untuk konstruksi L2 tertentu. Blueprint mewakili keseluruhan praktik terbaik untuk organisasi Anda.

Cetak biru bukanlah mekanisme penegakan kepatuhan. Pengembang masih dapat mengganti default jika diperlukan. Untuk penegakan kepatuhan yang ketat, pertimbangkan untuk menggunakan AWS CloudFormation Penjaga, Kebijakan Kontrol Layanan, atau Aspek CDK selain Cetak Biru.

Untuk informasi implementasi rinci, lihat [Property Injection RFC](https://github.com/aws/aws-cdk-rfcs/blob/main/text/0693-property-injection.md).

## Komponen kunci dari Blueprints
<a name="blueprints-key-pieces"></a>

Blueprints adalah kumpulan injektor properti yang menerapkan properti default untuk konstruksi ketika mereka dipakai. Injektor properti adalah komponen yang mengimplementasikan `IPropertyInjector` antarmuka, yang mencegat pembuatan konstruksi dan memodifikasi atau menambahkan properti sebelum konstruksi dibuat.
+  **IPropertyInjector** - ` [IPropertyInjector](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.IPropertyInjector.html) ` Mendefinisikan cara untuk menyuntikkan properti tambahan yang tidak ditentukan dalam alat peraga. Ini khusus untuk satu konstruksi L2 dan beroperasi pada properti konstruksi itu.
+  **PropertyInjectors**- ` [PropertyInjectors](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.PropertyInjectors.html) ` adalah kumpulan injektor yang melekat pada pohon konstruksi. Injektor dapat dilampirkan ke konstruksi apa pun, tetapi dalam praktiknya kami berharap sebagian besar dari mereka akan melekat pada`App`, `Stage` atau. `Stack`

## Kasus penggunaan umum untuk Cetak Biru
<a name="blueprints-use-cases"></a>

Anda dapat menggunakan CDK Blueprints untuk menstandarisasi banyak aspek sumber daya AWS Anda. Berikut adalah beberapa kasus penggunaan umum:

 **Standar keamanan**   
+ Pastikan semua bucket Amazon S3 mengaktifkan enkripsi sisi server.
+ Konfigurasikan semua grup keamanan untuk memblokir akses publik secara default.
+ Terapkan izin AWS Identity and Access Management (IAM) dengan hak istimewa paling rendah ke fungsi Lambda. AWS 
+ Menegakkan SSL untuk semua komunikasi jaringan.

 **Keunggulan operasional**   
+ Konfigurasikan logging standar untuk semua fungsi Lambda AWS .
+ Terapkan strategi penandaan yang konsisten di seluruh sumber daya.
+ Siapkan ambang batas pemantauan dan peringatan default.
+ Menerapkan kebijakan retensi standar untuk log dan cadangan.

 **Optimalisasi biaya**   
+ Konfigurasikan ukuran instans yang sesuai berdasarkan lingkungan.
+ Terapkan kebijakan auto-scaling dengan default organisasi.
+ Tetapkan aturan siklus hidup untuk bucket Amazon S3 untuk mentransisikan objek ke kelas penyimpanan yang lebih murah.
+ Konfigurasikan throughput standar yang disediakan untuk database.

 **Persyaratan kepatuhan**   
+ Menerapkan pengaturan enkripsi yang diperlukan untuk data yang diatur.
+ Menerapkan kebijakan pencadangan yang diperlukan untuk persyaratan penyimpanan data.
+ Konfigurasikan pengaturan VPC Amazon default yang memenuhi persyaratan keamanan.
+ Pastikan sumber daya memiliki tag yang diperlukan untuk alokasi biaya.

 **Produktivitas pengembang**   
+ Berikan default yang masuk akal yang mengurangi kebutuhan akan kode boilerplate.
+ Buat kelas Stack khusus organisasi dengan injektor bawaan.
+ Bagikan praktik terbaik di seluruh tim melalui injektor yang dapat digunakan kembali.
+ Sederhanakan orientasi dengan menyandikan pengetahuan organisasi dalam kode.

## Memulai dengan Blueprints
<a name="blueprints-getting-started"></a>

Berikut adalah contoh sederhana tentang cara membuat dan menggunakan injektor properti:

Pertama, buat injektor properti untuk bucket Amazon S3:

```
import { IPropertyInjector, InjectionContext } from 'aws-cdk-lib';
import { Bucket, BucketProps, BlockPublicAccess } from 'aws-cdk-lib/aws-s3';

export class SecureBucketDefaults implements IPropertyInjector {
  public readonly constructUniqueId: string;

  constructor() {
    this.constructUniqueId = Bucket.PROPERTY_INJECTION_ID;
  }

  public inject(originalProps: BucketProps, _context: InjectionContext): BucketProps {
    return {
      // Set security defaults
      blockPublicAccess: BlockPublicAccess.BLOCK_ALL,
      enforceSSL: true,

      // Include original props to allow overrides
      ...originalProps,
    };
  }
}
```

Kemudian, gunakan injektor di aplikasi CDK Anda:

```
import { App, Stack } from 'aws-cdk-lib';
import { Bucket } from 'aws-cdk-lib/aws-s3';
import { SecureBucketDefaults } from './secure-bucket-defaults';

// Attach injectors when creating the App
const app = new App({
  propertyInjectors: [new SecureBucketDefaults()]
});

const stack = new Stack(app, 'MyStack');

// This bucket automatically gets the default properties
const myBucket = new Bucket(stack, 'MyBucket');
```

Atau, Anda dapat menggunakan `PropertyInjectors.of()` metode ini:

```
import { App, Stack, PropertyInjectors } from 'aws-cdk-lib';
import { SecureBucketDefaults } from './secure-bucket-defaults';

const app = new App();
PropertyInjectors.of(app).add(new SecureBucketDefaults());

const stack = new Stack(app, 'MyStack');
const myBucket = new Bucket(stack, 'MyBucket');
```

## Praktik terbaik
<a name="blueprints-best-practices"></a>
+ Tempatkan properti default sebelumnya `…​originalProps` untuk mengizinkan penggantian.
+ Tempatkan properti paksa setelahnya `…​originalProps` untuk mencegah penggantian.
+ Gunakan tanda lewati saat membuat sumber daya untuk mencegah rekursi tak terbatas. Sebagai contoh, lihat [Apa yang terjadi ketika Anda perlu membuat Bucket accessLogBucket untuk?](https://github.com/aws/aws-cdk-rfcs/blob/main/text/0693-property-injection.md#what-happens-when-you-need-to-create-a-accesslogbucket-for-a-bucket) di *Property Injection RFC*.
+ Tambahkan logging untuk debugging.
+ Gunakan konteks CDK ke enable/disable injektor untuk pengujian.

Untuk informasi lebih rinci tentang injeksi properti, termasuk detail implementasi, tips pemecahan masalah, dan informasi referensi, lihat RFC [Injeksi Properti](https://github.com/aws/aws-cdk-rfcs/blob/main/text/0693-property-injection.md).