Amazon Web Services 한국 블로그
AWS Cloud Development Kit(CDK) – Java 및 .NET 정식 지원 시작
AWS Cloud Development Kit(CDK)에서 Java 및 .NET 지원을 정식으로 제공합니다. AWS CDK는 AWS CloudFormation을 통해 클라우드 애플리케이션 리소스를 모델링하고 프로비저닝하는 오픈 소스 소프트웨어 개발 프레임워크입니다. AWS CDK는 TypeScript 및 Python도 지원합니다.
AWS CDK를 사용하면 사용자만의 요구 사항을 통합하는 사용자 지정 리소스를 설계하고, 구성하고, 공유할 수 있습니다. 예를 들어 AWS CDK를 사용하여 연결된 라우팅 및 보안 구성으로 VPC를 모델링할 수 있습니다. 그런 다음 해당 코드를 구문으로 래핑한 다음 조직의 나머지 부분과 공유할 수 있습니다. 이렇게 하면 조직에서 AWS 리소스를 생성하는 방법을 표준화하기 위해 사용할 수 있는 이러한 구문의 라이브러리를 구축할 수 있습니다.
AWS CDK를 사용하면 인프라를 비롯한 애플리케이션을 즐겨 사용하는 IDE에서 애플리케이션 코드에 사용하는 것과 동일한 프로그래밍 언어로 빌드할 수 있다는 점이 마음에 듭니다. .NET 또는 Java에서 AWS CDK 모델을 코딩하면 코드 완료 및 인라인 문서와 같은 생산성 이점을 얻을 수 있으므로 인프라스트럭처 모델링을 더욱 빠르게 수행할 수 있습니다.
AWS CDK 작동 방식
AWS CDK의 모든 요소는 구문입니다. 여기서 구문이란, 복잡한 아키텍처를 표현할 수 있는 클라우드 구성 요소로 생각할 수 있습니다. 예를 들어, Amazon Simple Storage Service(S3) 버킷이나 Amazon Simple Notification Service(SNS) 주제, 정적 웹 사이트 또는 여러 AWS 계정이나 리전에 존재하는 복잡한 다중 스택 애플리케이션이 이에 해당합니다. 구문은 AWS 환경에 배포할 수 있는 스택 및 하나 이상의 스택 모음인 앱으로 함께 구성합니다.
AWS CDK에는 AWS 리소스를 나타내는 구문이 포함된 AWS 구문 라이브러리가 있습니다.
AWS CDK 사용 방법
AWS CDK를 사용하여 간단한 대기열을 빌드해보겠습니다. 단, YAML 또는 JSON으로 CloudFormation 템플릿을 작성하는 대신 AWS CDK를 사용하면 익숙한 프로그래밍 언어로 AWS CloudFormation 템플릿을 생성하고 배포할 수 있습니다.
시작하려면 NPM을 사용하여 AWS CDK 명령줄 인터페이스를 설치해야 합니다. 이 다운로드가 완료되면 TypeScript, Python, JavaScript, Java 또는 .NET으로 인프라를 코딩할 수 있습니다.
npm i -g aws-cdk
로컬 시스템에서 새 폴더를 만들고 해당 폴더로 이동합니다.
mkdir cdk-newsblog-dotnet && cd cdk-newsblog-dotnet
이제 CLI를 설치했으므로 cdk init
같은 명령을 실행하고 언어 스위치를 전달할 수 있습니다. 이 예에서는 .NET, 그리고 csharp
언어 스위치가 있는 샘플 앱을 사용합니다.
cdk init sample-app --language csharp
.NET이 아니라 Java를 사용할 경우에는 --language
스위치를 java
로 바꾸어야 합니다.
cdk init sample-app --language java
터미널에서 code .
를 입력합니다. 이는 VS 코드에서 현재 폴더를 여는 바로 가기입니다. 물론 Visual Studio, JetBrains Rider 등 아무 편집기나 사용할 수 있습니다. 아래에서 보듯이 init
명령은 기본 .NET AWS CDK 프로젝트를 생성합니다.
Program.cs를 살펴보면 Main void가 App을 생성한 후 CDKDotnetStack을 생성하는 것을 알 수 있습니다. 이 CDKDotnetStack 스택은 CDKDotnetStack.cs 파일에 정의됩니다. 프로젝트의 본문이 상주하고 모든 AWS 리소스가 정의된 위치입니다.
CDKDotnetStack.cs 파일 내에서 특정 코드가 Amazon Simple Queue Service(SQS)를 생성한 후 주제를 생성하고, 마지막으로 주제에 대한 Amazon Simple Notification Service(SNS) 구독을 추가합니다.
코드를 작성했으니 다음 단계로 코드를 배포해야 합니다. 코드를 배포하면 AWS CDK가 .NET 코드를 AWS CloudFormation 템플릿으로 변환하여 이 프로젝트를 컴파일 및 실행합니다.
배포하기만 한다면 실제로 CloudFormation 템플릿은 표시되지 않을 것입니다. 따라서 AWS CDK는 애플리케이션을 컴파일하고 실행한 후 CloudFormation 템플릿을 출력하는 cdk synth
명령을 제공합니다.
이는 표준 CloudFormation으로, 자세히 살펴보면 다음 항목을 확인할 수 있습니다.
- AWS::SQS::Queue – 추가한 대기열입니다.
- AWS::SQS::QueuePolicy – 주제에서 대기열로 메시지를 전송하도록 허용하는 IAM 정책입니다. 저는 실제로 이 정책을 코드에 정의하지 않았지만 AWS CDK가 이 정책이 필요하다는 것을 인식해 자동으로 생성합니다.
- AWS::SNS::Topic – 생성한 주제입니다.
- AWS::SNS::Subscription – 대기열과 주제 간의 구독입니다.
- AWS::CDK::Metadata – 이 섹션은 AWS CDK에만 해당하며 도구 키트에 의해 모든 스택에 자동으로 추가됩니다. 이 섹션은 AWS CDK 팀이 분석하는 데 사용하며, 문제가 있는 경우 버전을 식별할 수 있게 해줍니다.
이 프로젝트를 AWS 계정에 배포하기 전에 cdk bootstrap
을 사용합니다. bootstrap 명령은 Amazon Simple Storage Service(S3) 버킷을 생성합니다. 이 버킷은 AWS CDK에서 배포 시에 필요한 자산을 저장하는 데 사용됩니다. 이 예에서는 자산을 사용하지 않으므로 이 단계를 건너뛸 수 있습니다. 하지만 처음부터 환경을 부트스트랩하는 것이 좋습니다. 즉, 자산을 사용하도록 선택하면 나중에 배포 오류가 발생하지 않습니다.
이제 프로젝트를 배포할 준비가 되었으므로 다음 cdk deploy
명령을 실행하여 프로젝트를 배포합니다.
이 명령은 먼저 AWS CloudFormation 템플릿을 생성한 후 계정에 배포합니다. 프로젝트에서 보안 변경 사항을 적용하므로 해당 변경 사항을 배포할지 여부를 묻는 메시지가 나타납니다. [Yes]를 선택하면 CloudFormation 변경 세트가 생성되고 리소스가 빌드되기 시작합니다.
완료되면 CloudFormation 콘솔로 이동하여 모든 리소스가 AWS CloudFormation 스택의 일부로 구성되어 있음을 확인할 수 있습니다.
이것으로 .NET을 사용하여 리소스가 클라우드에 구축되었습니다.
Java 및 .NET이 추가됨에 따라 이제 AWS CDK는 총 5가지 프로그래밍 언어를 지원하여 AWS 리소스 구축에 있어 더 많은 옵션을 제공하게 되었습니다. 지금 바로 AWS CDK를 설치하여 즐겨 사용하는 언어로 리소스를 구축해보시기 바랍니다.