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.
Sebelum Anda dapat menyebarkan AWS Cloud Development Kit (AWS CDK) tumpukan, itu harus disintesis terlebih dahulu. Stack synthesis adalah proses memproduksi AWS CloudFormation template dan artefak penyebaran dari tumpukan CDK. Template dan artefak dikenal sebagai perakitan cloud. Perakitan cloud adalah apa yang digunakan untuk menyediakan sumber daya Anda. AWS Untuk informasi selengkapnya tentang cara kerja penerapan, lihat. Cara AWS CDK kerja penerapan
Bagaimana sintesis dan bootstrap bekerja sama
Agar aplikasi CDK Anda dapat diterapkan dengan benar, CloudFormation templat yang dihasilkan selama sintesis harus menentukan sumber daya yang dibuat dengan benar selama bootstrap. Oleh karena itu, bootstrap dan sintesis harus saling melengkapi agar penerapan berhasil:
-
Bootstrapping adalah proses satu kali menyiapkan lingkungan untuk penerapan. AWS AWS CDK Ini mengonfigurasi AWS sumber daya tertentu di lingkungan Anda yang digunakan oleh CDK untuk penerapan. Ini biasanya disebut sebagai sumber daya bootstrap. Untuk petunjuk tentang bootstrap, lihat. Bootstrap lingkungan Anda untuk digunakan dengan AWS CDK
-
CloudFormation template yang dihasilkan selama sintesis mencakup informasi tentang sumber daya bootstrap mana yang akan digunakan. Selama sintesis, CDK CLI tidak tahu secara spesifik bagaimana AWS lingkungan Anda telah di-bootstrap. Sebaliknya, CDK CLI menghasilkan CloudFormation template berdasarkan synthesizer yang Anda konfigurasikan untuk setiap tumpukan CDK. Agar penerapan berhasil, synthesizer harus menghasilkan CloudFormation template yang mereferensikan sumber daya bootstrap yang benar untuk digunakan.
CDK dilengkapi dengan synthesizer default dan konfigurasi bootstrap yang dirancang untuk bekerja sama. Jika Anda menyesuaikan satu, Anda harus menerapkan penyesuaian yang relevan ke yang lain.
Cara mengkonfigurasi sintesis tumpukan CDK
Anda mengonfigurasi sintesis tumpukan CDK menggunakan synthesizer
properti Stack
instance Anda. Properti ini menentukan bagaimana tumpukan CDK Anda akan disintesis. Anda memberikan instance dari kelas yang mengimplementasikan IStackSynthesizer
atauIReusableStackSynthesizer
. Metodenya akan dipanggil setiap kali aset ditambahkan ke tumpukan atau ketika tumpukan disintesis. Berikut ini adalah contoh dasar menggunakan properti ini dalam tumpukan Anda:
new MyStack(this, 'MyStack', {
// stack properties
synthesizer: new DefaultStackSynthesizer({
// synthesizer properties
}),
});
Anda juga dapat mengonfigurasi synthesizer untuk semua tumpukan CDK di aplikasi CDK menggunakan properti instance Anda: defaultStackSynthesizer
App
import { App, Stack, DefaultStackSynthesizer } from 'aws-cdk-lib';
const app = new App({
// Configure for all stacks in this app
defaultStackSynthesizer: new DefaultStackSynthesizer({
/* ... */
}),
});
Secara default, AWS CDK penggunaannyaDefaultStackSynthesizer
. Jika Anda tidak mengkonfigurasi synthesizer, synthesizer ini akan digunakan.
Jika Anda tidak memodifikasi bootstrap, seperti membuat perubahan pada tumpukan atau template bootstrap, Anda tidak perlu memodifikasi sintesis tumpukan. Anda bahkan tidak perlu menyediakan synthesizer. CDK akan menggunakan DefaultStackSynthesizer
kelas default untuk mengonfigurasi sintesis tumpukan CDK untuk berinteraksi dengan benar dengan tumpukan bootstrap Anda.
Cara mensintesis tumpukan CDK
Untuk mensintesis tumpukan CDK, gunakan Antarmuka Baris AWS CDK Perintah (AWS CDK CLI) cdk synth
perintah. Untuk informasi selengkapnya tentang perintah ini, termasuk opsi yang dapat Anda gunakan dengan perintah ini, lihatcdk synthesize.
Jika aplikasi CDK berisi satu tumpukan, atau untuk mensintesis semua tumpukan, Anda tidak perlu memberikan nama tumpukan CDK sebagai argumen. Secara default, CDK CLI akan mensintesis tumpukan CDK Anda ke dalam templat. AWS CloudFormation
Template json
yang diformat untuk setiap tumpukan disimpan ke cdk.out
direktori. Jika aplikasi Anda berisi satu tumpukan, templat yang yaml
diformat akan dicetak. stdout
Berikut adalah contohnya:
$
cdk synth
Resources: CDKMetadata: Type: AWS::CDK::Metadata Properties: Analytics: v2:deflate64:H4sIAAAAAAAA/unique-identifier
Metadata: aws:cdk:path: CdkAppStack/CDKMetadata/Default Condition: CDKMetadataAvailable...
Jika aplikasi CDK berisi beberapa tumpukan, Anda dapat memberikan ID logis tumpukan untuk mensintesis satu tumpukan. Berikut adalah contohnya:
$
cdk synth
MyStackName
Jika Anda tidak mensintesis tumpukan dan menjalankannyacdk deploy
, CDK CLI akan secara otomatis mensintesis tumpukan Anda sebelum penerapan.
Bagaimana sintesis bekerja secara default
Dihasilkan logis IDs di AWS CloudFormation template Anda
Saat Anda mensintesis tumpukan CDK untuk menghasilkan CloudFormation templat, logis IDs dihasilkan dari sumber berikut, diformat sebagai: <construct-path><construct-ID><unique-hash>
-
Construct path — Seluruh path ke build di aplikasi CDK Anda. Jalur ini mengecualikan ID konstruksi L1, yang selalu
Resource
atauDefault
, dan ID tumpukan tingkat atas yang menjadi bagiannya. -
Construct ID — ID yang Anda berikan sebagai argumen kedua saat membuat instance konstruksi Anda.
-
Hash unik — Ini AWS CDK menghasilkan hash unik 8 karakter menggunakan algoritma hashing deterministik. Hash unik ini membantu memastikan bahwa nilai ID logis dalam template Anda unik satu sama lain. Perilaku deterministik dari generasi hash ini memastikan bahwa nilai ID logis yang dihasilkan untuk setiap konstruksi tetap sama setiap kali Anda melakukan sintesis. Nilai hash hanya akan berubah jika Anda memodifikasi nilai konstruksi tertentu seperti ID konstruksi Anda atau jalurnya.
Logika IDs memiliki panjang maksimum 255 karakter. Oleh karena itu, AWS CDK akan memotong jalur konstruksi dan membangun ID jika perlu untuk tetap dalam batas itu.
Berikut ini adalah contoh konstruksi yang mendefinisikan bucket Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3). Di sini, kami lulus myBucket
sebagai ID untuk konstruksi kami:
import * as cdk from 'aws-cdk-lib';
import { Construct} from 'constructs';
import * as s3 from 'aws-cdk-lib/aws-s3';
export class MyCdkAppStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// Define the S3 bucket
new s3.Bucket(this, 'myBucket', {
versioned: true,
removalPolicy: cdk.RemovalPolicy.DESTROY,
});
}
}
Ketika kita menjalankancdk synth
, ID logis dalam format myBucket
akan dihasilkan. Berikut ini adalah contoh sumber daya ini dalam AWS CloudFormation template yang dihasilkan:unique-hash
Resources:
myBucket5AF9C99B:
Type: AWS::S3::Bucket
Properties:
VersioningConfiguration:
Status: Enabled
UpdateReplacePolicy: Delete
DeletionPolicy: Delete
Metadata:
aws:cdk:path: S3BucketAppStack/myBucket/Resource
Berikut ini adalah contoh konstruksi kustom bernama Bar
yang mendefinisikan bucket Amazon S3. Bar
Konstruksi mencakup konstruksi khusus Foo
di jalurnya:
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as s3 from 'aws-cdk-lib/aws-s3';
// Define the Bar construct
export class Bar extends Construct {
constructor(scope: Construct, id: string) {
super(scope, id);
// Define an S3 bucket inside of Bar
new s3.Bucket(this, 'Bucket', {
versioned: true,
removalPolicy: cdk.RemovalPolicy.DESTROY,
} );
}
}
// Define the Foo construct
export class Foo extends Construct {
constructor(scope: Construct, id: string) {
super(scope, id);
// Create an instance of Bar inside Foo
new Bar(this, 'Bar');
}
}
// Define the CDK stack
export class MyCustomAppStack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// Instantiate Foo construct in the stack
new Foo(this, 'Foo');
}
}
Ketika kita menjalankancdk synth
, ID logis dalam format FooBarBucket
akan dihasilkan. Berikut ini adalah contoh sumber daya ini dalam AWS CloudFormation template yang dihasilkan:unique-hash
Resources:
FooBarBucketBA3ED1FA:
Type: AWS::S3::Bucket
Properties:
VersioningConfiguration:
Status: Enabled
UpdateReplacePolicy: Delete
DeletionPolicy: Delete
# ...
Sesuaikan sintesis tumpukan CDK
Jika perilaku sintesis CDK default tidak sesuai dengan kebutuhan Anda, Anda dapat menyesuaikan sintesis CDK. Untuk melakukan ini, Anda memodifikasiDefaultStackSynthesizer
, menggunakan synthesizer bawaan lain yang tersedia, atau membuat synthesizer Anda sendiri. Untuk instruksi, lihat Sesuaikan sintesis tumpukan CDK.