AWS CDK Workshop
AWS CDK 맛보기!!
Before getting started
Workshop을 시작하기 전에 AWS CDK가 뭔지 간단히 알아봅시당
AWS CDK란?
AWS CDK (Cloud Development Kit)는 현대적 프로그래밍 언어를 사용하여 Cloud Infra를 code로 정의하고,
AWS CloudFormation
을 통해 배포하는 opensource software 개발 프레임워크
AWS CDK CLI로 무엇을 할 수 있을까?
: AWS CDK CLI를 사용하여 CDK application과 상호 작용할 수 있다
CDK CLI를 사용하면
CDK 앱에 정의된 stack을 나열하고,
Stack을
CloudFormation
템플릿에 합성하고,실행중인 stack instance와 CDK code에 정의된 stack 간의 CDK code 에 정의된 stack 간의 차이점을 확인하고,
원하는 Public AWS Region 에 stack을 배포 할 수 있다
AWS CDK는 어떻게 작동할까?
AWS CDK 프레임워크를 사용하여 AWS CDK 프로젝트를 작성할 수 있으며, 이 프로젝트가 실행되어
CloudFormation
템플릿을 생성하게 된다.AWS CDK 프로젝트는 AWS CDK CLI 나 CD system에서 실행될 수 있다
0. Install AWS CDK
1. CDK INIT
CDK INIT
Typescript를 사용하는 CDK 프로젝트 생성하기
실행 결과
참고하면 좋은 명령어들이 출력됨
Useful commands
npm run build
compile typescript to jsnpm run watch
watch for changes and compilenpm run test
perform the jest unit testscdk deploy
deploy this stack to your default AWS account/regioncdk diff
compare deployed stack with current statecdk synth
emits the synthesized CloudFormation template
2. npm run watch
TypesScript 코드 컴파일링
TypeScript 코드는 JavaScript로 compile 되어야 하기 때문에 소스 코드 변경 분을 확인하려면 계속해서
.js
파일로 complile을 해주어야 한다프로젝트에는
watch
라는 이름의 npm script가 이미 설정되어 있어서, 이를 실행하면 매번 수동으로 complie 해줄 필요 없이 자동으로 변경분을.js
파일로 complie 해준다!
코드 변경분 watch 하기
프로젝트 Directory 로 이동
watch
script 수행
그러면 터미널 창의 내용이 지워지고 다음과 같은 결과가 출력된다
이 script는 TypeScript Compiler (
tsc
) 를 watch 모드로 시작해서, 프로젝트 디렉토리를 monitoring 하여.ts
파일의 변경분을.js
파일로 자동 complie 해준다!넘나 신기
3. 프로젝트 구조
Project Directory 탐색
lib/cdk-workshop-stack.ts
CDK application의 main stack이 저장되는 곳
bin/cdk-workshop.ts
CDK application의 entry point
lib/cdk-workshop-stack.ts
에 정의된 stack을 load 한다
cdk.json
toolkit이 어떻게 app을 실행해야 하는지 알려주는 파일
이 프로젝트의 경우 "npx ts-node bin/cdk-workshop.ts" 가 들어간다!
Entry Point
Entry point인
bin/cdk-workshop.ts
파일 살펴보기
이 코드는
CdkWorkshopStack
을 load하고 initiate 한다어떤 stack을 load할 것인지만 정의되고 나면 더 이상 볼 일이 없는 파일
Main Stack
중요한 부분이 정의되는
lib/cdk-workshop-stack.ts
파일 살펴보기
Application이 sample CDK stack (
CdkWorkshopStack
) 으로 이루어진 것 확인 가능이 stack에는 아래의 세 가지 서비스 생성이 포함된다
SQS Queue
new sqs.Queue
SNS Topoic
new sns.Topic
SNS Topic에서 발생하는 모든 message를 수신하도록 Queue 설정
topic.addSubscription
4. CDK Synth
CDK 앱에서 CloudFormation
Template 산출하기
CloudFormation
Template 산출하기AWS CDK 앱은 code를 이용해서 Infra를 효과적으로 정의하도록 도와주는 도구이다
CDK 앱이 실제로 실행될 때는
AWS CloudFormation
template을 stack마다 생성하여 실제 배포를 한다CDK 앱에서 template을 산출하기 위해서는
cdk synth
명령어를 사용할 수 있다CDK CLI는
cdk.json
파일이 있는 directory에서만 실행될 수 있는 점 유의하기!
Sample app에서 추출된 template 살펴보기
cdk synth
명령어를cdk.json
파일이 있는 directory에서 실행하면 위와 같이 CloudFormation template이 출력된다이 template은 아래의 4가지 자원을 생성한다
AWS::SQS::Queue
SQS 큐
AWS::SNS::Topic
SNS 토픽
AWS::SNS::Subscription
큐와 토픽 사이의 subscription 정의
AWS::SQS::QueuePolicy
토픽에서 큐로
메시지
를 보낼 수 있는 IAM 정책
AWS::CDK::Metadata 는
CDK toolkit
에 의해 모든 stack에 자동으로 생성되는 자원이다CDK 팀이 보안 issue 파악 및 분석을 하는데에 사용된다고 함!
5. CDK Deploy
환경 Bootstrap
AWS CDK 앱을 환경 (계졍/region)에 배포하기 위해서는 먼저
bootstrap stack
을 설치해야 한다bootstrap stack에는 toolkit의 운영을 위해 필요한 자원들이 포함되어 있다
ex)
CFN
teamplate을 보관하고, 배포 process 동안 생성되는 asset들을 저장하는 S3 bucket
cdk bootstrap
명령어를 이용해서 하나의 환경에 대한 bootstrap stack을 설치할 수 있다
만약 여기에서 Access Denied error가 발생하면,
AWS CLI 가 제대로 설정되지 않았거나
사용중인 AWS profile 이
cloudformation:CreateChangeSet
작업을 수행할 권한이 없는 것
위의 명령어가 성공정으로 수행되고 나면 CDK 앱을 배포할 수 있다!
배포하기
cdk deploy
명령어를 이용해서 CDK 앱을 배포한다
위와 같은 경고는 배포하려는 앱에 보안 점검이 필요한 항목이 동반되는 경우 출력된다
Topic에서 Queue로 message를 보내줘야 하므로 y를 입력하여 stack을 배포하고 자원을 생성하자!
실행 결과 설명
us-west-2
는 app을 생성한 region 이고,213888382832
는 account ID이고,fa564140-f078-11ea-b665-0a050e07f862
는 stack ID 이다
CloudFormation Console
CDK 앱은 AWS
CloudFormation
을 통해 배포된다CDK stack은
CloudFormation
stack과 1:1 로 매핑된다즉, Stack 을 관리하기 위해 CloudFormation을 이용할 수 있다!
CloudFormation console
CdkWorkshopStack
을 선택하고 리소스 탭을 클릭하면, 생성한 자원의 물리적 ID를 확인할 수 있다
물리적 ID 확인하기
Last updated