[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 명령으로 실행 




생성된 vpc 확인




























댓글