v AWS CDK 2 개발자 안내서입니다. 이전 CDK v1은 2022년 6월 1일에 유지 관리에 들어갔으며 2023년 6월 1일에 지원이 종료되었습니다.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
An AWS Cloud Development Kit (AWS CDK) stage는 함께 배포하도록 구성된 하나 이상의 CDK 스택 그룹을 나타냅니다. 스테이지를 사용하여 개발, 테스트 및 프로덕션과 같은 여러 환경에 동일한 스택 그룹을 배포합니다.
CDK 스테이지를 구성하려면 Stage
구문을 가져와 사용합니다.
다음은 MyAppStage
라는 CDK 스테이지를 정의하는 기본 예입니다. AppStack
및 DatabaseStack
이라는 두 CDK 스택을 스테이지에 추가합니다. 이 예에서 AppStack
은 애플리케이션 리소스를 포함하고 DatabaseStack
은 데이터베이스 리소스를 포함합니다. 그런 다음 개발 및 프로덕션 환경을 위해 MyAppStage
의 두 인스턴스를 생성합니다.
cdk-demo-app/lib/app-stack.ts
에서:
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
// Define the app stack
export class AppStack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// The code that defines your application goes here
}
}
cdk-demo-app/lib/database-stack.ts
에서:
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
// Define the database stack
export class DatabaseStack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// The code that defines your database goes here
}
}
cdk-demo-app/lib/my-stage.ts
에서:
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import { Stage } from 'aws-cdk-lib';
import { AppStack } from './app-stack';
import { DatabaseStack } from './database-stack';
// Define the stage
export class MyAppStage extends Stage {
constructor(scope: Construct, id: string, props?: cdk.StageProps) {
super(scope, id, props);
// Add both stacks to the stage
new AppStack(this, 'AppStack');
new DatabaseStack(this, 'DatabaseStack');
}
}
cdk-demo-app/bin/cdk-demo-app.ts
에서:
#!/usr/bin/env node
import 'source-map-support/register';
import * as cdk from 'aws-cdk-lib';
import { MyAppStage } from '../lib/my-stage';
// Create a CDK app
const app = new cdk.App();
// Create the development stage
new MyAppStage(app, 'Dev', {
env: {
account: '123456789012',
region: 'us-east-1'
}
});
// Create the production stage
new MyAppStage(app, 'Prod', {
env: {
account: '098765432109',
region: 'us-east-1'
}
});
cdk synth
를 실행하면 cdk.out
에 2개의 클라우드 어셈블리가 생성됩니다. 이 두 클라우드 어셈블리에는 각 단계의 합성된 AWS CloudFormation 템플릿과 자산이 포함되어 있습니다. 다음은 프로젝트 디렉터리의 스니펫입니다.
cdk-demo-app ├── bin │ └── cdk-demo-app.ts ├── cdk.out │ ├── assembly-Dev │ │ ├── DevAppStack
unique-hash
.assets.json │ │ ├── DevAppStackunique-hash
.template.json │ │ ├── DevDatabaseStackunique-hash
.assets.json │ │ ├── DevDatabaseStackunique-hash
.template.json │ │ ├── cdk.out │ │ └── manifest.json │ ├── assembly-Prod │ │ ├── ProdAppStackunique-hash
.assets.json │ │ ├── ProdAppStackunique-hash
.template.json │ │ ├── ProdDatabaseStackunique-hash
.assets.json │ │ ├── ProdDatabaseStackunique-hash
.template.json │ │ ├── cdk.out │ │ └── manifest.json └── lib ├── app-stack.ts ├── database-stack.ts └── my-stage.ts
cdk list
로 스택을 나열하면 총 4개의 스택이 표시됩니다.
$
cdk list
Dev/AppStack (Dev-AppStack) Dev/DatabaseStack (Dev-DatabaseStack) Prod/AppStack (Prod-AppStack) Prod/DatabaseStack (Prod-DatabaseStack)
특정 스테이지를 배포하기 위해 cdk deploy
를 실행하고 배포할 스택을 제공합니다. 다음은 *
와일드카드를 사용하여 이 Dev
스테이지에서 두 스택을 모두 배포하는 예입니다.
$
cdk deploy "Dev/*"
✨ Synthesis time: 3.18s Dev/AppStack (Dev-AppStack) Dev/AppStack (Dev-AppStack): deploying... [1/2] ✅ Dev/AppStack (Dev-AppStack) ✨ Deployment time: 1.11s Stack ARN:...
✨ Total time: 4.29s Dev/DatabaseStack (Dev-DatabaseStack) Dev/DatabaseStack (Dev-DatabaseStack): deploying... [2/2] ✅ Dev/DatabaseStack (Dev-DatabaseStack) ✨ Deployment time: 1.09s Stack ARN:...
✨ Total time: 4.27s