Amazon Web Service(AWS)
AWS CDK 간단정리
D.Y
2021. 11. 4. 10:53
반응형
개요
AWS CDK란?
- AWS Cloud Development Kit으로 프로그래밍 언어를 사용하여 클라우드 애플리케이션 리소스를 모델링 및 프로비저닝 해주는 도구
- 기존의 yaml, json 형태의 선언적 접근 방식보다 더 개발자에게 친화적인 언어를 사용해서 작성할 수 있다
기존 인프라 구축 방법
- Level 1
- AWS 관리 콘솔에서 리소스 만들기
- Level 2
- 코드 형태의 명령형 인프라 (aws-cli, aws-sdk 사용하여 deploy script 작성)
- 문제 발생시 재시도하기 어려움, 동시에 여러명이 스크립트를 실행할 경우 에러 발생
- 코드 형태의 명령형 인프라 (aws-cli, aws-sdk 사용하여 deploy script 작성)
- Level 3
- 코드로 선언하여 인프라 관리
- yaml 또는 json 형태의 선억적 접근 방식 사용
- Terraform, AWS CloudFormation (AWS 만 지원)
- 코드로 선언하여 인프라 관리
- Level 4
- 개발자에게 친화적인 언어로 작성 가능(DX)
- for, if 와 같은 조건문을 사용하여 동적으로 인프라 구성이 가능
아키텍쳐
실습 (TypeScript)
실습내용
AWS SNS와 SQS를 생성하고, SQS를 구독하도록 SNS를 설정한다.
- AWS SNS
- AWS SQS
1. cdk cli 설치
$ npm install -g aws-cdk
2. cdk cli를 사용하여 프로젝트 생성
$ cdk init --language typescript
Project structure
- lib: CDK Application의 메인 스택 정의
- bin: CDK Application의 entry point (lib 디렉터리 하위의 스택이 사용된다)
- cdk.json: Application에서 사용될 toolkit 정의
3. 메인 스택 정의
import * as sns from '@aws-cdk/aws-sns';
import * as subs from '@aws-cdk/aws-sns-subscriptions';
import * as sqs from '@aws-cdk/aws-sqs';
import * as cdk from '@aws-cdk/core';
export class CdkWorkshopStack extends cdk.Stack {
constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
super(scope, id, props);
const queue = new sqs.Queue(this, 'CdkWorkshopQueue', {
visibilityTimeout: cdk.Duration.seconds(300)
});
const topic = new sns.Topic(this, 'CdkWorkshopTopic');
topic.addSubscription(new subs.SqsSubscription(queue));
}
}
4. cdk로 정의한 app을 사용하여 CloudFormation template 생성
$ cdk synth
5. bootstrap
// aws configure에 설정된 계정 정보를 사용하여 s3에 버킷 생성
$ cdk bootstrap
6.deploy
// 리소스 배포
$ cdk deploy
참조
- AWS CDK 워크샵, https://cdkworkshop.com/
- AWS 솔루션아키텍트 CDK 발표영상, https://youtu.be/hOJbhfF0DYQ
- AWS 공식문서, https://docs.aws.amazon.com/ko_kr/cdk/latest/guide/getting_started.html
- AWS CDK TypeScript Example, https://github.com/aws-samples/aws-cdk-examples/tree/master/typescript
- AWS CDK NPM Package, https://www.npmjs.com/~aws-cdk-team
- AWS CDK Ref, https://docs.aws.amazon.com/cdk/api/latest/docs/aws-construct-library.html
- CDK 모니터링, https://www.npmjs.com/package/cdk-watchful
- CloudWatch에 Dashboard로 생성
반응형