[AWS] aws-cdk로 인프라 생성
aws-cdk로 인프라 생성
새 CDK 프로젝트생성
사용자폴더에 빈 디렉터리를 생성하고 이 디렉터리로 이동 후 이제 cdk init를 사용하여 새 TypeScript CDK 프로젝트를 생성합니다.
bin/cdkvpctest.ts - CDK 애플리케이션에 대한 진입 포인트, lib/* 하위에 정의한 모든 스택을 로드
lib/cdkvpctest-stack.ts - 주요 CDK 애플리케이션이 정의되는 지점
package.json - 프로젝트 종속 파일, 그리고 일부 추가 정보를 정의하고 스크립트를 구축하는 지점
cdk.json - CDK 및 프로젝트에 관련된 일부 추가 설정 및 파라미터를 실행하는 방법에 대한 도구 키트를 알려줍니다.
bin/cdk-demo.ts 스택설정
AWS 계정 ID를 적절한 숫자로 바꾸고, 적절한 리전을 선택합니다.
#!/usr/bin/env node
import 'source-map-support/register';
import * as cdk from 'aws-cdk-lib';
import { CdkvpctestStack } from '../lib/cdkvpctest-stack';
const app = new cdk.App();
new CdkvpctestStack(app, 'CdkvpctestStack', {
env: { account:'계정' , region: '리전'}
});
AWS VPC에 대한 지원도 포함하는 Amazon EC2 모듈이 필요하기 때문에 모듈을 설치합니다.
# npm install -g @aws-cdk/aws-ec2
package.json 내부를 확인합니다.
"name": "cdkvpctest",
"version": "0.1.0",
"bin": {
"cdkvpctest": "bin/cdkvpctest.js"
},
"scripts": {
"build": "tsc",
"watch": "tsc -w",
"test": "jest",
"cdk": "cdk"
},
"devDependencies": {
"@types/jest": "^27.5.2",
"@types/node": "10.17.27",
"@types/prettier": "2.6.0",
"aws-cdk": "2.31.0",
"jest": "^27.5.1",
"ts-jest": "^27.1.4",
"ts-node": "^10.8.1",
"typescript": "~3.9.7"
},
"dependencies": {
"@aws-cdk/aws-ec2": "^1.163.0", aws-ec2 모듈 추가를 확인합니다
"aws-cdk-lib": "2.31.0",
"constructs": "^10.0.0",
"source-map-support": "^0.5.21"
}
}
lib/cdk-demo.ts에서 스택 정의
처음 열 때는 다음과 같은 내용이 표시됩니다.
import { Stack, StackProps } from 'aws-cdk-lib';
import { Construct } from 'constructs';
// import * as sqs from 'aws-cdk-lib/aws-sqs';
export class CdkvpctestStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
// The code that defines your stack goes here
// example resource
// const queue = new sqs.Queue(this, 'CdkvpctestQueue', {
// visibilityTimeout: cdk.Duration.seconds(300)
// });
}
}
vpc 정의
import * as cdk from '@aws-cdk-lib';
// 모듈 클래스를 가져옵니다
import { Vpc, SubnetType } from '@aws-cdk/aws-ec2';
export class CdkvpctestStack extends cdk.Stack {
constructor(scope: cdk.APP, id: string, props?: cdk.StackProps) {
super(scope, id, props);
const vpc = new Vpc(this, 'MainVpc',{
//사용할 가용영역의 개수
maxAzs: 2,
// 가용영역당 단일 서브넷 구성을 정의합니다.
subnetConfiguration: [
{
// CIDR mask 를 255.255.255.0
cidrMask: 24,
// CHANGE: 서브넷의 이름
name: 'public-vur-subnet',
// 사용할 서브넷 유형
subnetType: SubnetType.PUBLIC
},
]
});
}
}
cdk deploy 명령으로 실행
댓글
댓글 쓰기