일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- AWS Infra
- notification system
- tenneling
- Intellij
- Buffered channel
- 배포 파이프라인
- gitops
- AWS
- 컴포지트패턴
- GoF 디자인패턴
- body size
- Bastion Server
- GoF
- 윈도우키보드
- 배포 프로세스
- golang
- Kubernetes
- Infra
- Logrus
- go
- Helm V3
- 디자인패턴
- Golines
- System Design
- intellij ide
- UnBuffered channel
- goland
- apollo router
- http 413
- 대규모 시스템 설계
Archives
- Today
- Total
Fall in IT.
AWS CDK 간단정리 본문
개요
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로 생성
'Amazon Web Service(AWS)' 카테고리의 다른 글
AWS 환경설정하기 (0) | 2021.11.29 |
---|---|
Amazon EKS에 컨테이너 웹 앱 배포 (0) | 2021.11.28 |
AWS의 S3를 활용하여 간단하게 정적 웹사이트 호스팅하는방법 (0) | 2020.06.17 |
AWS - EC2 하드디스크 용량 늘리기 (4) | 2019.03.15 |
.pem파일 없이 AWS EC2 접속하는 방법 (1) | 2018.06.04 |
Comments