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.
Anda dapat membuat AWS Cloud Development Kit (AWS CDK) aplikasi yang berisi beberapa tumpukan. Saat Anda menerapkan AWS CDK aplikasi, setiap tumpukan menjadi AWS CloudFormation templatnya sendiri. Anda juga dapat mensintesis dan menyebarkan setiap tumpukan satu per satu menggunakan AWS CDK CLI cdk deploy
perintah.
Dalam contoh ini, kami membahas yang berikut:
-
Cara memperluas
Stack
kelas untuk menerima properti atau argumen baru. -
Cara menggunakan properti untuk menentukan sumber daya mana yang berisi tumpukan dan konfigurasinya.
-
Cara membuat instance beberapa tumpukan dari kelas ini.
Contoh dalam topik ini menggunakan properti Boolean, bernama encryptBucket
(Pythonencrypt_bucket
:). Ini menunjukkan apakah bucket Amazon S3 harus dienkripsi. Jika demikian, tumpukan memungkinkan enkripsi menggunakan kunci yang dikelola oleh AWS Key Management Service (AWS KMS). Aplikasi ini membuat dua instance tumpukan ini, satu dengan enkripsi dan satu tanpa.
Prasyarat
Contoh ini mengasumsikan bahwa semua langkah memulai telah selesai.
Buat proyek CDK
Pertama, kami membuat proyek CDK menggunakan CDK CLI:
mkdir multistack cd multistack cdk init --language=typescript
Tambahkan parameter opsional
props
Argumen Stack
konstruktor memenuhi antarmuka. StackProps
Dalam contoh ini, kami ingin tumpukan menerima properti tambahan untuk memberi tahu kami apakah akan mengenkripsi bucket Amazon S3. Untuk melakukan ini, kita membuat antarmuka atau kelas yang mencakup properti. Hal ini memungkinkan compiler untuk memastikan bahwa properti memiliki nilai Boolean dan memungkinkan pelengkapan otomatis untuk itu di IDE Anda.
Kami membuka file stack kami di IDE atau editor kami dan menambahkan antarmuka, kelas, atau argumen baru. Baris baru disorot dengan huruf tebal:
Berkas: lib/multistack-stack.ts
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
interface MultiStackProps extends cdk.StackProps {
encryptBucket?: boolean;
}
export class MultistackStack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: MultiStackProps) {
super(scope, id, props);
// The code that defines our stack goes here
}
}
Properti baru adalah opsional. Jika encryptBucket
(Python:encrypt_bucket
) tidak ada, nilainya adalahundefined
, atau setara lokal. Bucket tidak akan dienkripsi secara default.
Tentukan kelas tumpukan
Selanjutnya, kita mendefinisikan kelas stack kita, menggunakan properti baru kita. Kode baru disorot dengan huruf tebal:
Berkas: lib/multistack-stack.ts
import * as cdk from 'aws-cdk-lib';
import { Construct } from constructs;
import * as s3 from 'aws-cdk-lib/aws-s3';
interface MultistackProps extends cdk.StackProps {
encryptBucket?: boolean;
}
export class MultistackStack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: MultistackProps) {
super(scope, id, props);
// Add a Boolean property "encryptBucket" to the stack constructor.
// If true, creates an encrypted bucket. Otherwise, the bucket is unencrypted.
// Encrypted bucket uses KMS-managed keys (SSE-KMS).
if (props && props.encryptBucket) {
new s3.Bucket(this, "MyGroovyBucket", {
encryption: s3.BucketEncryption.KMS_MANAGED,
removalPolicy: cdk.RemovalPolicy.DESTROY
});
} else {
new s3.Bucket(this, "MyGroovyBucket", {
removalPolicy: cdk.RemovalPolicy.DESTROY});
}
}
}
Buat dua instance tumpukan
Dalam file aplikasi kami, kami menambahkan kode untuk membuat instance dua tumpukan terpisah. Kami menghapus MultistackStack
definisi yang ada dan mendefinisikan dua tumpukan kami. Kode baru disorot dengan huruf tebal:
Berkas: bin/multistack.ts
#!/usr/bin/env node
import 'source-map-support/register';
import * as cdk from 'aws-cdk-lib';
import { MultistackStack } from '../lib/multistack-stack';
const app = new cdk.App();
new MultistackStack(app, "MyWestCdkStack", {
env: {region: "us-west-1"},
encryptBucket: false
});
new MultistackStack(app, "MyEastCdkStack", {
env: {region: "us-east-1"},
encryptBucket: true
});
app.synth();
Kode ini menggunakan properti baru encryptBucket
(Python:encrypt_bucket
) di MultistackStack
kelas untuk membuat contoh berikut:
-
Satu tumpukan dengan bucket Amazon S3 terenkripsi di Wilayah.
us-east-1
AWS -
Satu tumpukan dengan bucket Amazon S3 yang tidak terenkripsi di Wilayah.
us-west-1
AWS
Sintesis dan gunakan tumpukan
Selanjutnya, kita dapat menerapkan tumpukan dari aplikasi. Pertama, kami mensintesis AWS CloudFormation template untukMyEastCdkStack
. Ini adalah tumpukan us-east-1
dengan ember Amazon S3 terenkripsi.
$
cdk synth MyEastCdkStack
Untuk menyebarkan tumpukan ini ke AWS lingkungan kita, kita dapat mengeluarkan salah satu perintah berikut. Perintah pertama menggunakan AWS profil default kami untuk mendapatkan kredensyal untuk menyebarkan tumpukan. Yang kedua menggunakan profil yang kami tentukan. UntukPROFILE_NAME
, kita dapat mengganti nama AWS CLI profil yang berisi kredensi yang sesuai untuk diterapkan ke. us-east-1
Wilayah AWS
$
cdk deploy MyEastCdkStack
$
cdk deploy MyEastCdkStack --profile=
PROFILE_NAME
Bersihkan
Untuk menghindari biaya untuk sumber daya yang kami gunakan, kami menghancurkan tumpukan menggunakan perintah berikut:
cdk destroy MyEastCdkStack
Operasi penghancuran gagal jika ada sesuatu yang disimpan dalam ember tumpukan. Seharusnya tidak ada, karena kita hanya membuat ember. Jika kita memasukkan sesuatu ke dalam ember, kita harus menghapus isi bucket sebelum menghancurkan tumpukan. Kita dapat menggunakan AWS Management Console atau AWS CLI untuk menghapus isi bucket.