AWS CDK란 무엇인가?
AWS CDK란 무엇인가요?
AWS CDK (Cloud Development Kit)는 2018년 8월 개발자 프리뷰로 출시되었으며, TypeScript, JavaScript, Java, .NET, Python을 사용해 AWS 인프라를 생성할 수 있게 해줍니다.
예를 들어, DynamoDB 테이블을 생성하는 CloudFormation 템플릿은 이제 다음과 같이 작성할 수 있습니다.
- Resources:
- NotesTable:
- Type: AWS::DynamoDB::Table
- Properties:
- TableName: ${self:custom.tableName}
- AttributeDefinitions:
- - AttributeName: userId
- AttributeType: S
- - AttributeName: noteId
- AttributeType: S
- KeySchema:
- - AttributeName: userId
- KeyType: HASH
- - AttributeName: noteId
- KeyType: RANGE
- BillingMode: PAY_PER_REQUEST
+ const table = new dynamodb.Table(this, "notes", {
+ partitionKey: { name: "userId", type: dynamodb.AttributeType.STRING },
+ sortKey: { name: "noteId", type: dynamodb.AttributeType.STRING },
+ billingMode: dynamodb.BillingMode.PAY_PER_REQUEST,
+ });
첫 번째로 눈에 띄는 점은 리소스가 JavaScript의 클래스 인스턴스로 정의된다는 것입니다. 이는 프로그래밍 언어에서 객체를 다루는 방식과 동일하므로 매우 편리합니다. 이제 인프라도 같은 방식으로 다룰 수 있습니다. 두 번째로, 이러한 객체를 재사용할 수 있습니다. 객체를 결합하거나 합성할 수 있습니다. 따라서 항상 동일한 리소스 세트를 생성하는 경우, 이를 새로운 클래스로 만들어 재사용할 수 있습니다!
CDK는 진정한 코드로서의 인프라입니다.
CDK 작동 방식
CDK는 내부적으로 CloudFormation을 사용합니다. 여러분이 작성한 코드를 CloudFormation 템플릿으로 변환합니다. 위 예제에서 보듯, 아래쪽에 코드를 작성하면 위쪽에 CloudFormation 템플릿이 생성됩니다.
CDK 앱은 여러 개의 스택으로 구성됩니다. 더 정확히 말하면, cdk.Stack
클래스의 여러 인스턴스로 이루어집니다. 이들은 결국 CloudFormation 스택으로 변환되지만, 코드로 표현된 CloudFormation 스택이라고 생각하는 것이 더 적절합니다.
cdk synth
를 실행하면 이 스택들이 CloudFormation 템플릿으로 변환됩니다. 그리고 cdk deploy
를 실행하면 이 템플릿들을 CloudFormation에 제출합니다. CloudFormation은 이 스택들과 그 안에 정의된 모든 리소스를 생성합니다.
과정은 상당히 직관적입니다. 중요한 점은 내부적으로 CloudFormation을 사용하지만, 더 이상 YAML이나 JSON 템플릿을 직접 다루지 않는다는 것입니다.
For help and discussion
Comments on this chapter