cdk - basics with AWS bootstrapping

tags: cdk aws infrastructure-as-code

안녕, AWS CDK?

안녕하세요, 김재욱입니다. 오늘의 주제는 AWS의 또 다른 리소스 프로비저닝 툴인 CDK의 리전과 계정 Bootstrapping에 대해 알아보려고 합니다.

이번 글은 종전의 인트로시작하기을 보시지 않으셔도 따라 할 수 있는 글 입니다. 또한 AWS로 직접적인 클라우드 리소스(S3버킷, IAM 등) 배포를 하는 과정이 포함됨으로, AWS 계정에 권한과 과금이 될 수 있다는 것을 알아두시길 바랍니다.

CDK Bootstrap

CDK Bootstrap (발음: 부트스트랩/붓스트랩)과정은 CDK 어플리케이션을 배포하기전 꼭 필수적인 단계이며, 리전별 계정당 한번만 하면 되는 과정입니다. 가령 쓰고싶은 리전이 us-east-1us-west-2이면, 리전당 한번씩, 두번 해주셔야 합니다.

이 과정의 중요 포인트는, CDKToolKit 클라우드포메이션 스택의 배포인데, 이 스택은, CDK 어플리케이션을 배포하기 위한 권한들과 여타 리소스들이 (IAM Role, S3 bucket 등) 해당 AWS 계정에 배포가 되어집니다. 이 툴킷관련 클라우드포메이션 역시 볼수 있으며, 권한 추가 및 삭제가 가능하게끔 되어있습니다.

How to bootstrap my aws account?

부트스트랩을 하는 방법엔 여러가지가 있습니다. 이번 섹션에선 가장 간단한 방법인 cdk bootstrap를 통한 과정과 cdk cli가 만들어주는 클라우드포메이션을 직접 배포하는 두 방법을 소개하려합니다. 두 방법을 사용 전, aws cli툴과 cdk cli툴 설치는 필수 단계이고, aws configure를 통한 계정 로그인 역시 마친 후에 다음으로 넘어가실수 있습니다.

running cdk bootstrap cli

이 방법은 꽤나 직관적이고, 가장 쉽게 부트스트랩핑과정을 적용할수 있는 커맨드입니다. 다양한 CLI 옵션과 파라미터로 커스터마이징을 구현해 낼수 있습니다.

(npm run) cdk bootstrap aws://ACCOUNTNUMBER/REGION 

또는

# cdk.json 파일이 있는 디렉토리로 이동 필요
# 시작하기 포스트에서 init한 프로젝트 사용
cd sample_project 
(npm run) cdk bootstrap

해당 커맨드를 실행을 하면, 터미널에 보이는 일렬의 과정 끝에 툴킷이 배포된걸 확인 하실 수 있습니다.

예시 아웃풋: cli deployment

running aws cloudformation cli command

위 방법이 어렵다면, 부트스트랩 템플랫을 cdk bootstrap 커맨드를 통해 만든 뒤, 직접적으로 쓰고싶은 리전과 계정에 배포도 가능합니다. 이 단계에서 추출한 bootstrap-template.yaml파일은 클라우드포메이션 템플랫 파일이며, 필요부분에 대해 직접 수정 역시 가능합니다.

npx aws-cdk bootstrap --show-template > bootstrap-template.yaml 

aws cloudformation create-stack \
  --stack-name CDKToolkit \
  --capabilities CAPABILITY_NAMED_IAM \
  --template-body file://bootstrap-template.yaml

예시 아웃풋: template deployment

축하합니다! 두 가지 방법중 하나로 부트스트랩핑을 마치셨다면, CDK 어플리케이션을 사용하시는 계정에 배포 가능한 상태가 되어 있을거고, 다음편엔 리소스 만드는 방법으로 찾아 오겠습니다.

오늘도, 끝까지 읽어주셔서 감사합니다. 질문은 이메일, 링크드인 메시지, 깃헙이슈로 열어주시면, 아는 한도내에서 답 해드리겠습니다!

오늘도 좋은 하루 되세요!

Written by Jae Wook Kim
Written on December 21, 2023
Last modified on December 23, 2023