devOps

[devOps/AWS] AWS CDK (cloud development kit) 시작하기

GODOLs 2023. 2. 5. 12:44

인프라를 구축하기 위해서 가장 많이 기본적으로 사용하는 서비스인 AWS를 사용한 서비스를 많이 사용합니다.

 

물론 Console을 통해 제품을 사용할 수 있지만 코드만으로 구축할 수 있는 CDK가 있습니다.

 

오픈 소스 개발 프레임워크 - AWS Cloud Development Kit - AWS

TypeScript, Python, Java, .NET 및 Go(개발자 평가판)를 사용하여 완전히 새로운 인프라에서 완전배포형 인프라로의 전환을 가속화합니다.

aws.amazon.com

AWS CDK는 기존의 IaC(Infrastructure as Code)에서 제공하는 YAML 또는 JSON 형태의 선언적 접근 방식과는 개발자 친화적인 프로그래밍 언어로 되어있는 장점이 있습니다.

언어는 Typescript, Java, Python, .NET의 4가지의 언어를 지원하고 있습니다.


어떻게 CDK를 구축하는지 알아보도록 하겠습니다.

그전에 AWS CLI를 Local에 설치를 해야합니다. 설치 하는 법은 해당 링크에 있습니다. https://longtermsad.tistory.com/13

 

Mac OS에 AWS Cli 설정하기

AWS Cli 란? AWS 커맨드 라인 인터페이스(AWS Command Line Interface, aws cli)는 AWS 서비스를 관리하는 통합 도구입니다. 여러 AWS 서비스를 명령줄에서 제어하고 스크립트를 통해 자동화할 수 있습니다. 설

longtermsad.tistory.com

 

1. IAM을 AWS CLI에 등록하기 (Mac Terminal ver)

 

$aws configure
AWS Access Key ID $[IAM에서 발급받은 Access key]
AWS Secret Access Key $[IAM에서 발급받은 Secret Access Key]
Default region name $[ap-northeast-2]

 

AWS IAM에서 계정을 생성하여 Access Key와 Secret Key를 발급받아 사용합니다.

 

2. CDK 초기화 생성 하기

$mkdir cdk-test && cd cdk-test
$cdk init --language typescript

 

빈 폴더에 CDK init을 하여 CDK코드를 작성할 수 있는 프로젝트가 생성 됩니다.

language는 위에서 말했듯이 Java, Python, .NET을 적으면 해당언어로 프로젝트가 생성 됩니다.

TypeScrpit로 CDK를 init하고 완료되었다는 화면

3. 프로젝트 실행하기

IDE를 통해서 프로젝트를 한번 실행해보도록 하겠습니다.

저는 JetBrain의 WebStorm으로 진행했습니다. 다른 IDE사용 하셔도 크게 문제 될 건 없을 것 같습니다.

1) 프로젝트 구조

프로젝트 구조를 보시면 다음과 같습니다.

CDK는 Typescrpit 부분으로 보면 Bin 폴더와 Lib 폴더로 나뉩니다.

Bin 폴더는 App을 나타냅니다. 여기서 App은 CDK CLI를 통해 CloudFormation 탬플릿을 렌더링 하고 배포를 진행합니다.

 

AWS CloudFormation이란 무엇인가요? - AWS CloudFormation

AWS CloudFormation이란 무엇인가요? AWS CloudFormation은 AWS 리소스를 모델링하고 설정하여 리소스 관리 시간을 줄이고 AWS에서 실행되는 애플리케이션에 더 많은 시간을 사용하도록 해 주는 서비스입니

docs.aws.amazon.com

Lib 폴더는 Stack을 나타 냅니다. Stack은 AWS Lambda, ECS, RDS 와 같은 리소스를 표현하는 구문을 가집니다.

 

import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';

export class CdkTestStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // 여기에 구문들이 쌓여서 랜더링을 할 수 있게 됩니다.


  }
}

 

다음 포스트엔 AWS Lambda를 CDK를 이용해 배포해보는 과정을 다루겠습니다.

반응형