[DevOps] AWS CDK
AWS CDK(AWS Cloud Development Kit)는 현대적 프로그래밍 언어를 사용하여 클라우드 인프라를 코드로 정의하고 AWS CloudFormation을 통해 배포하는 오픈 소스 소프트웨어 개발 프레임워크이다.
콘솔을 사용하지 않고 Iac를 사용하며 생기는 장점은 코드를 통해 인프라를 관리하고 프로비저닝 함으로써, 오류감소, 비용 절감, 일관성, 버전 관리 등이다.
Iac(Infrastructure as Code) 코드형 인프라는 수동 프로세스가 아닌 코드를 통해 인프라를 관리하고 프로비저닝하는 것을 말한다.
다른 Iac에 비해 cdk가 주는 장점은 AWS Toolkit 활용이 가능하며, 상위 레벨의 다양한 언어로 구현가능하다는 장점이 있다.
* 프로비저닝 : it 인프라를 설정하는 프로세스. 사용자와 시스템에서 사용할 수 있도록, 데이터와 리소스에 대한 액세스를 관리하는 데 필요한 단계를 지칭하기도 한다.
cdk 프로젝트의 기본 구조
cdk는 aws 환경에 배포할 수 있는 스택 및 하나 이상의 스택 모음인 앱으로 함께 구성된다.
bin에 들어가는 파일은 cdk 프로젝트의 진입점이다. lib에서 만든 스택들을 이 곳에 불러와야 사용할 수 있다.
6번째 줄처럼 스택들을 생성하여 연결하는 역할을 한다.
lib폴더안에 있는 파일들은 bin에 들어있는 파일들의 스택들을 정의한다.
스택 클래스들은 기본적으로 Stack클래스를 상속받으며 생성자를 통해서 AWS서비스들을 정의한다.
위 코드의 내용은 sqs(amazon simple queue service)와 sns(amazon simple notification service)을 만들어서 연결을 한다.
sqs는 기본적으로 첫번째 파라미터로 scope, 두번째 파라미터로 id를, 세번째 파라미터로 props를 정의한다.
sns는 기본적으로 props를 따로 받지 않고, addSubscription이라는 함수를 통해 sqs를 이어 받는다.
cdk 배포
1. cdk synth => cdk -> cloudformation 템플릿으로 변환하는 명령어이다. 명령어 실행 후에 cdk.out 이라는 폴더에서 cloudformation으로 어떻게 변환되었는지 확인할 수 있다.
2. cdk diff => 기존의 배포되어있는 스택과 비교하여 어떤 점이 변경되었는가를 확인할 수 있다.
2.5 cdk bootstrap => 최초에 deploy전 실행을 해줘야한다.
3 cdk deploy and y => 배포 명령어이다.
4 cdk destroy => 스택을 지우는 명령어이다.
aws cdk api 독스 주소
https://docs.aws.amazon.com/cdk/api/v2/docs/aws-construct-library.html