cdk - basics with typescript
안녕, AWS CDK?
안녕하세요, 김재욱입니다. 오늘의 주제는 AWS의 또 다른 리소스 프로비저닝 툴인 CDK의 기본적인 프로젝트 셋업과 커맨드에 대해 알아 볼 예정입니다.
이번 글에서는 타입스크립트를 활용한 프로젝트를 만들 예정입니다.
Sample_Project Setup
샘플 프로젝트를 만들어 볼 에정이니, 해당 폴더와 필요한 앱 설정 해주도록 하겠습니다. 이 섹션을 완료하시면, 기본 프로젝트 트리와 스트럭쳐가 만들어져 좋은 시작포인트까지 오신것입니다.
mkdir sample_project # 폴더만들기
n 20 # nodejs 설치*
npx aws-cdk init --language typescript # cdk boilerplate 만들기
Sample_Project
npx aws-cdk init --language typescript
커맨드 실행뒤 생기는 폴더들과 파일들이 cdk 프로젝트의 기본이 쓰여질수있는 상태로 만들어집니다. 여타 다른 타입스크립트 프로젝트들과 크게 다르지 않으며, package.json
과 tsconfig.json
그리고 cdk.json
을 주축으로 프로젝트가 정의 됩니다.
또한, 일반적인 리소스 추가는, lib
폴더 속, sample_project-stack.ts
파일, SampleProjectStack
클래스 안에 추가를 하면, 해당 클라우드포메이션 스택에 리소스 추가 형식으로 만들어지게 됩니다. 가령, vpc 리소스를 추가를 원한다면, cdk.aws_ec2.Vpc
리소스를 추가하여 만들수 있게 됩니다. CDK 사용 가능한 리소스들은 AWS 문서에 자세히 기술되어 있습니다.
Sample_Project와 실질적인 cdk 코드 사용법에 대해선, 차차 다른 코드체인지들과 함께 돌아오도록 하겠습니다.
CDK CLI
AWS CDK에는 다양한 CLI 커맨드가 존재합니다. 이번 섹션에서는, 앞으로 자주 사용하게될 synth
, deploy
, 그리고 diff
에 대해 알아보겠습니다.
자세한 사항에 대해선 AWS 문서를 참조 바랍니다.
Synth
(npm run) cdk synth
(발음: 씬쓰)는 모든 cdk 과정들중 필수적으로 거치는단계인데, 이 과정중에 코드 빌드 과정이 포함되어 있습니다. cdk 빌드는 코드 작성중에 사용한 변수들, 사용한 범주, 만들고 사용한 참조를 실제 값으로 변환하는 과정 포함하여 클라우드포메이션에서 인식가능한 JSON으로 변환을 시켜주는 과정을 말합니다. 이 과정 끝에 나온 JSON은 프로젝트 루트에 cdk.out
폴더로 나오게 됩니다.
Deploy
(npm run) cdk deploy
(발음: 디플로이)는 synth에서 컴파일된 JSON파일을 실 AWS 환경에 배포를 담당하는 커맨드입니다. 자연스럽게 이 커맨드 전에 synth
과정은 필수이고, 디플로이 커맨드 안에 포함되어져 실행됩니다.
Diff
(npm run) cdk diff
(발음: 디프)는 현재 코드와, 배포가 되어진 스택에 한해서 차이점을 비교하여 터미널에 보여줍니다. 이 커맨드 역시, 컴파일 된 현재 상태가 필요로 하기때문에 synth
과정이 포함되어져 있으며 현재 AWS에 배포되어있는 상태와 비교를 합니다. 추가로, 이 과정은 현재 배포 되어져 있는 상태, 말 그대로 배포가 되어져있는 스택의 클라우드포매이션과, 컴파일 된 클라우드포메이션을 비교하는 과정입니다. 혹시 수동으로 AWS에서 설정을 바꾼 리소스는, 당연하게, 트랙되지 않습니다.
Note
*다른 여러 방법으로 nodejs를 설치하기
오늘도, 끝까지 읽어주셔서 감사합니다. 질문은 이메일, 링크드인 메시지, 깃헙이슈로 열어주시면, 아는 한도내에서 답 해드리겠습니다!
오늘도 좋은 하루 되세요!
Last modified on December 23, 2023