클라우드 개발 키트(Cloud Development Kit, CDK)

jisoolee·2023년 5월 29일
0

AWS Associate Developer

목록 보기
22/27

AWS Cloud Development Kit(CDK)

: JavaScript/TypeScript Python, Java 및 .NET 등의 친숙한 프로그래밍 언어를 이용해서 클라우드 인프라를 정의하도록 해주는 키트

  • constructs라고 불리는 높은 수준의 구성요소를 가지고 있다.
  • 인프라와 애플리케이션 런타임 코드를 함께 배포할 수 있다.

CDK vs SAM

CDK Constructs

: CDK가 최종 CloudFormation 스택을 생성하는 데 필요한 모든 것들을 담아놓은 구성 요소

AWS Construct Library

: CDK에 포함되어 있는 컨스트럭트를 모아놓은 곳

Construct Hub

: AWS만이 아니라 서드파티나 오픈 소스 커뮤니티의 컨스트럭트도 있는 경우 CDK 스택을 더 빠르게, 더 잘 생성할 수 있다.

Layer 1 Constructs(L1)

: CloudFormation 내의 사용 가능한 모든 리소스를 표현하기 때문에 CFN 리소스라고도 한다.

  • bucket을 선언하고 새 S3 버킷을 생성할 때 CloudFormation Resource Specification의 속성과 똑같은 프로퍼티를 정의한다.
  • CfnBucket은 버켓에 필요한 모든 리소스 프로퍼티를 가지고 있어야 한다.

Layer 2 Constructs(L2)

: 더 높은 수준의 AWS 리소스

  • bucket.addLifeCycleRule()과 같은 메서드로 수명주기 규칙을 추가할 수 있다.

Layer 3 Constructs(L3)

: 여러 관련 리소스를 나타내기 때문에 패턴이라고 한다.

  • aws-apigateway.LambdaRestApi
  • aws-ecs-patterns.ApplicationLoadBalancerFargateService

Important Commands to know

  • npm install -g aws-cdk-lib: CDK CLI와 라이브러리를 설치하는 명령어
  • cdk init app: 앱을 특정 템플릿에서 초기화
  • cdk synth: CloudFormation 템플릿을 합성하고 출력
  • cdk bootstrap
  • cdk deploy: 스택을 배포
  • cdk diff: 배포된 스택의 차이를 본다.
  • cdk destroy: 스택 삭제

Bootstrapping

: CDK 앱을 AWS 환경에 배포할 수 있게 미리 CDK에 맞게 리소스를 프로비저닝하는 과정

  • AWS Environment = account & region
  • 한 리전의 계정에 배포할 수 있게 그 전에 미리 CDKToolkit이라는 CloudFormation 스택을 배포해야 한다. 이 스택에는 S3 Bucket과 IAM Roles이 들어있게 된다.
  • 새 환경에 배포할 때는 cdk bootstrap aws://<aws_account>/<aws_region> 을 입력한다.
  • 환경에 부트스트래핑을 하지 않았다면 CDK 스택을 배포하려고 시도할 때 “정책에 유효하지 않은 Principal이 하나 이상 포함된 Statement가 들어 있습니다”라는 오류가 발생한다.

Testing

  • CDK 앱에는 CDK Assertion Module이라는 게 있는데 이것을 이용해 필요한 특정 리소스나 역할, 조건, 파라미터 등이 있는지 확인할 수 있다.

Fine-grained Assertions(common)

Snapshot Tests

To import a Template

Template.fromStack(MyStack)

: CDK에서 정의한 스택을 실제로 가져오기 한다.

Template.fromString(MyString)

: 템플릿이 CDK에 아직 없을 경우 가져오기 한다.

0개의 댓글