AWS CDKとは?
AWS CDKは、プログラミング言語でクラウドのインフラを定義できるフレームワークです。 クラウドのインフラをテキストで定義できるサービスとしては、AWS CloudFormationがありますが、これと少し似ています。
AWS CloudFormationではJSONやYAMLといったテキストファイルでリソースを定義していましたが、AWS CDKではプログラムコードで同様のことができるものとも言えます。
ということは、使い慣れた開発環境でAWS CloudFormationと似たようにインフラをコードで定義できたり、アプリケーションとインフラをまとめて管理できたりといったメリットがあります。
さらにテキストファイルではなくプログラムコードなので、状況に応じて動的にパラメータを変えてAWSにシステムを立ち上げるといったことも可能です。
AWS CDKの特徴
AWS CDKには、AWS Cloudformationとの連携、多様なプログラミング言語対応、CLI、IDEとの連携といった特徴があります。
AWS CloudFormationとの連携 プログラムコードでAWSリソースを定義し、AWS CloudFormation を通じてサービスを利用できます。同じシステムを簡単に再現できたり、スタックの動作状況のモニタなど、CloudFormationと同様の利点があります。
多様なプログラミング言語対応 AWS CDK は、TypeScript、Python、Java、.NETに対応します。
これらの言語に対応した既存のIDEやテストツールといった開発環境をそのまま利用して開発できます。 CLIとの連携 AWS CDKにはCLI(コマンドラインインタフェース)があります。コマンドラインから、テンプレートの合成や実行中のスタックとの違いの表示など、様々な操作ができます。
IDEとの連携 AWS Toolkit for Visual Studio Codeというツールの機能として、AWS CDK Explorerがあります。これはVisual Studio Codeに統合されたツールで、IDEからAWS CDKの操作、モニタが可能となります。
CDK Workshopとは
CDK Workshopとは、AWS CDKの公式チュートリアルサイトであり、実際に手を動かしてCDKを使ってみるための資料が揃っています。 CDKは、JavaScript, TypeScript, Python, Java, .NETをサポートしています。このCDK Workshopで説明があるのはTypeScriptとPythonです。
環境構築
以下、Workshopの手順にそって、AWS CDKでAWSリソースを起動するための大まかな流れとコード例を示します。言語はここではTypescriptで進めます。まずは、環境構築について触れます。 環境構築 まず環境構築として以下の準備が必要です。すでにインストールされているツールがあれば飛ばして問題ありません。 ・AWSアカウントとユーザー ・AWS CLI ・Node.js ・IDE ・AWS CDK Toolkit ・Python AWS CDK Toolkitのインストールは、以下のコマンドでできます。
npm install -g aws-cdk
Workshop手順
Workshopは以下のセクションで構成されます。 ・New Project ・Hello, CDK! ・Writing constructs ・Using construct libraries ・Clean up New Project(新規プロジェクト作成) lib/cdk-workshop-stack.tsが主要コード部分になります。使うリソースがここに記述されます。 そして、CDK CLIから以下のコマンドを叩くことで、CloudFormationのテンプレートが生成されます。
$cdk synth
CDKのリソース格納用のバケットをS3に作成します。
$cdk bootstrap
リソース作成は、CDKコマンドラインから以下のコマンドでできます。
$cdk deploy
処理が始まり、途中で確認のためのメッセージが出力されます。これにyと回答すると、S3バケットにリソースが作成されます。起動後は、CloudFormationのWebコンソールからもスタックのステータスが確認できます。 ここまでが、いちばん基本的なCDK手順です。 Hello,CDK! ここでは、サンプルリソースの削除を試します。 元々の基本サンプルにはSNSとSQSのリソースを含めた定義が入っていますが、これらのリソースの削除を試します。 ソースファイルから、SNSとSQSリソースのコードを削除します。その上で、以下のコマンドで、ソースコードと、実際に動作しているリソースの違いを事前に確認します。
$cdk diff
先ほどデプロイした時にはSNSとSQSが入っていて、現在のソースコードには存在しないはずなので、SNSとSQSの部分が差分として表示されるはずです。 確認できれば、再度cdk deployを実行すると、SNSとSQSが削除されます。 Writing Constructs これはAWS Lambdaを用いた、簡単なカウンターアプリのサンプルです。 Clean up(リソースの削除) AWS CDKリソースを、以下のコマンドで全て削除できます。 もちろん、AWS CloudFormationコンソールでスタックを削除しても構いません。
$cdk destroy
実行後、AWSのコンソールで、これらのリソースが削除されていることが確認できます。
AWS CDK料金
CloudFormationと同様、AWS CDKについては追加料金は発生しません。ただし、Amazon EC2 インスタンス、データベースなどのAWSリソースをCDKで起動した場合には、手動で作成した場合と同様に料金が発生します。最低料金が発生しない点も同じです。
AWS CDKでインフラ管理してみよう
AWS CDKについてまとめました。
AWS CDKは、プログラミング言語でクラウドのインフラを定義できるフレームワークです。AWS CloudFormationと似ていますが、CloudFormationとは異なり、テキストファイルベースではなくプログラミング言語でAWS CloudFormationのテンプレートを生成するサービスと言えます。 インフラをコードで管理できるので、アプリケーションとインフラをまとめて管理できたり、動的にパラメータを設定してシステムを立ち上げるといった応用が考えられます。
さらに、AWS CDKでは多くのプログラミング言語(TypeScript、Python、Java、.NET )対応、コマンドラインインタフェース、IDEとの連携といった特徴があります。多くの言語に対応しているので、慣れた言語と開発環境を利用して開発できます。
また、AWS CDKそのものの利用については、CloudFormationと同様に費用がかかりません。 本記事では、さらにAWSの公式チュートリアルであるAWS CDK Workshopに沿って概要を説明しました。
さらに、CDKのコマンドラインからサンプルのCloudFormationスタックの作成、実行中スタックとの差分チェック、デプロイとスタックの削除といった一通りの流れについて触れました。 AWS CDKを利用することで、アプリケーションコードと同様にインフラがコードベースで管理できます。
AWSインフラを使い慣れた開発環境で管理できますし、テストシステムやバージョン管理システムでテストやバージョン管理することもできます。様々なメリットがありますのでAWS CDKを活用していくと良いでしょう。]]>
この記事の監修者・著者

-
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞