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.
Aspek adalah cara untuk menerapkan operasi ke semua konstruksi dalam lingkup tertentu. Aspek dapat memodifikasi konstruksi, seperti dengan menambahkan tag. Atau bisa memverifikasi sesuatu tentang status konstruksi, seperti memastikan bahwa semua ember dienkripsi.
Untuk menerapkan aspek ke konstruksi dan semua konstruksi dalam lingkup yang sama, panggil Aspects
.of(
dengan aspek baru, seperti yang ditunjukkan pada contoh berikut.SCOPE
).add()
Aspects.of(myConstruct).add(new SomeAspect(...));
AWS CDK Menggunakan aspek untuk menandai sumber daya, tetapi kerangka kerja juga dapat digunakan untuk tujuan lain. Misalnya, Anda dapat menggunakannya untuk memvalidasi atau mengubah AWS CloudFormation sumber daya yang ditentukan untuk Anda oleh konstruksi tingkat yang lebih tinggi.
Aspek secara detail
Aspek menggunakan pola pengunjung
interface IAspect {
visit(node: IConstruct): void;}
Saat Anda meneleponAspects.of(
, konstruksi menambahkan aspek ke daftar aspek internal. Anda dapat memperoleh daftar denganSCOPE
).add(...)Aspects.of(
.SCOPE
)
Selama fase persiapan, AWS CDK panggilan visit
metode objek untuk konstruksi dan masing-masing anaknya dalam urutan top-down.
visit
Metode ini bebas untuk mengubah apa pun dalam konstruksi. Dalam bahasa yang diketik dengan kuat, lemparkan konstruksi yang diterima ke tipe yang lebih spesifik sebelum mengakses properti atau metode khusus konstruksi.
Aspek tidak menyebar melintasi batas-batas Stage
konstruksi, karena mandiri dan Stages
tidak dapat diubah setelah definisi. Terapkan aspek pada Stage
konstruksi itu sendiri (atau lebih rendah) jika Anda ingin mereka mengunjungi konstruksi di dalam. Stage
Contoh
Contoh berikut memvalidasi bahwa semua bucket yang dibuat di tumpukan mengaktifkan versi. Aspek menambahkan anotasi kesalahan ke konstruksi yang gagal validasi. Hal ini mengakibatkan synth operasi gagal dan mencegah penerapan rakitan cloud yang dihasilkan.
class BucketVersioningChecker implements IAspect {
public visit(node: IConstruct): void {
// See that we're dealing with a CfnBucket
if (node instanceof s3.CfnBucket) {
// Check for versioning property, exclude the case where the property
// can be a token (IResolvable).
if (!node.versioningConfiguration
|| (!Tokenization.isResolvable(node.versioningConfiguration)
&& node.versioningConfiguration.status !== 'Enabled')) {
Annotations.of(node).addError('Bucket versioning is not enabled');
}
}
}
}
// Later, apply to the stack
Aspects.of(stack).add(new BucketVersioningChecker());