Konfigurasikan konstruksi dengan CDK Blueprints - AWS Cloud Development Kit (AWS CDK) v2

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

catatan

Cetak Biru CDK dalam rilis pratinjau dan dapat berubah sewaktu-waktu.

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 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.

Komponen kunci dari Blueprints

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 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 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 padaApp, Stage atau. Stack

Kasus penggunaan umum untuk Cetak Biru

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

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

  • 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? di Property Injection RFC.

  • Tambahkan logging untuk debugging.

  • Gunakan konteks CDK untuk mengaktifkan/menonaktifkan injektor untuk pengujian.

Untuk informasi lebih rinci tentang injeksi properti, termasuk detail implementasi, tips pemecahan masalah, dan informasi referensi, lihat RFC Injeksi Properti.