AWS CDKとは
世界的なクラウドサービスのAmazonが提供する「AWS CDK」は『Cloud Development Kit 』の略称であり、主要なプログラミング言語を用いてクラウドインフラをコードで定義し、「AWS CloudFormation」(AWSリソースの構築サービス)によってデプロイできる開発フレームワークのことです。
AWS CDKを利用することで「AWS CloudFormation」の簡便化が図れ、またAWSの様々なクラウドサービスを直接プログラムから操作することが可能になるなど、クラウド環境開発の効率化が期待されます。
この記事では、AWS CDKをテーマに、その特徴や類似サービスとの違い、利用料金や利用手順などについて解説します。
【参考】:アマゾン ウェブ サービス(AWS クラウド) 【参考】:オープンソースの開発フレームワーク - AWS クラウド開発キット | AWS 【参考】:AWS CloudFormation(テンプレートを使ったリソースのモデル化と管理)| AWS
AWS CDKの概要
AWSにはリソースのモデル化やセットアップを支援するサービスとして、AWS CloudFormationがあります。一言で表せば、AWS CDKはAWS CloudFormationのテンプレート生成ツールです。
このAWS CloudFormationを利用することで、リソースの管理に掛かる作業や時間を軽減し、AWSでのアプリケーションの実行にさらに注力できますが、AWS CloudFormationはテンプレートファイルの作成や修正をJSON/YAMLというテキスト形式で行うため、記述方式を覚える必要があります。
一方のAWS CDKは使い慣れたプログラミング言語を用いて、少ないステップ数でテンプレートを作成します。
CDKとSDKの違い
AWS CDKと語句が似ているサービスに「AWS SDK」があります。AWS SDKは『Software Development Kit』の略語で、AWS環境で提供されている各種プログラム言語や開発環境に合わせたソフトウエア開発に関わるツールです。
C++やGo、Java、JavaScript、Pythonなど、よく使われる言語の多くが利用できます。一方のAWS CDKはクラウド環境の開発フレームワークであり、クラウドインフラを対象としている点が大きく異なります。
【参考】:AWS での構築のための SDK とプログラミングツールキット| AWS
AWS CDKの特徴やメリット
ここまでAWS CDKの概要について紹介しました。ここからは、AWS CDKの主な特徴やメリットについて確認していきます。
CDKの特徴
AWS CDKは以下のように、AWS Cloudformationとの連携機能、多様なプログラミング言語対応、CLIやIDEとの連携が行えるといった特徴があります。以下、それぞれの特徴について解説します。
■AWS CloudFormationとの連携 プログラムコードを用いてAWSのリソースを定義したり、AWS CloudFormationと連携させたりしてサービスを利用できます。スタックの動作状況のモニタリングなど、AWS CloudFormationの利点も享受できます。
■多様なプログラミング言語に対応 AWS CDKは、TypeScript・Python・Javaや.NETに対応しています。これら利用頻度の高い言語に対応した既存のテストツールやIDなどの開発環境を利用して開発を行えます。
■CLIとの連携機能 AWS CDKではAWS CLI(コマンドラインインタフェース)から、テンプレートを合成したり、実行中のスタックとの違いを表示したり、様々な操作が可能です。
■ IDEとの連携機能 VSCodeをAWS上で利用できる「AWS Toolkit for Visual Studio Code」の1つの機能として、「AWS CDK Explorer」があります。このAWS CDK Explorerを用いて、プロジェクト内でのスタック、リソースやプロパティなどを容易に確認できます。
CDKのメリット
AWS CDKの特徴が分かったところで、AWS CDKを利用することでどのようなメリットが得られるのか見ていきましょう。
■ 簡潔に記述できる CloudFormationのテンプレート作成を手で行う場合は、関数の利用や論理名の紐付けなど面倒な作業がありますが、AWS CDKではプログラム言語の柔軟性を利用して、より簡潔かつ効率的にコードの記述が行えます。
■ タイプミスや論理ミスが減る テンプレート作成でエディタの補完機能が利用できるため、リソース名やパラメータ名のタイプミスをなくすことができます。またプログラム入力やコンパイル時にエラーチェックが行われるため、論理ミスをなくすことができます。
■ コンソール感覚で作業ができる AWS CLIでリソースの作成を行った場合、バックグラウンドで必要となるパラメータ設定や権限付与、必要リソースの作成などが行われ、それらの記述を省略できるため、まさにコンソール感覚で作業をシンプルに行うことができます。
CDK Workshop
CDK WorkshopはAWS CDKに関する公式チュートリアルサイトで、無料でAWSのサービスをハンズオン形式で学ぶことができます。ただし、使用言語が英語であるため、翻訳しながら利用することになります。
AWS CDKはJavaScript・TypeScript・Python・Java・.NETをサポートしていますが、CDK WorkshopではTypeScriptとPythonのみ説明があります。
【参考】:TypeScript ワークショップ | AWS CDK Workshop| AWS
AWS CDK v2の変更点
2021年12月にAWS CDK v2が登場しました。v2の主な変更点は以下の通りで、既にAWS CDKを利用中の方にとっては、v2移行のメリットを感じられるバージョンアップです。
▪AWS Construct Libraryが1パッケージになった ▪v1で非推奨のプロパティやメソッドが完全削除された ▪v2ではすべてのFeature flagsが有効になった
ちなみにv1は2023年6月1日にサポートが終了しており、現状多くのユーザがv2に移行しています。v2のより詳細な内容は以下のリンクより確認しましょう。
【参考】:AWS CDKv2 への移行 - AWS Cloud Development Kit (AWS CDK) v2| AWS
CDKの料金と利用手順
AWS CDKを実際に利用する前に、料金と利用手順について確認しておきましょう。
料金
AWS CDKは GitHubのApache ライセンスv 2.0の下で配布されます。AWS CDK自体の利用料金は無料ですが、CDKによってデプロイされるAWSのリソース(Amazon EC2インスタンス、 Elastic Load Balancing:負荷分散など) には手動で作成した場合と同様に従量制の料金が掛かります。
【参照】:AWS 料金見積りツール 【参照】:aws-cdk/LICENSE at v1-main · aws/aws-cdk ·GitHub
CDKを利用する手順
AWS CDKを利用するためにはあらかじめ必要なものがあり、さらに環境構築が必要です。ここでは、CDKを利用するための環境構築手順について解説します。
■ 前提条件
AWS CDKを利用するには、以下の2つの条件を満たすことが前提です。
①LinuxOSにNode.jsがインストールされている必要がある(Node.js:JavaScriptを利用するためのプラットフォーム) ②AWSアカウントを有しており、サービスアカウントのIAMユーザの作成ができること
【参照】:AWS CDK の開始方法 - AWS Cloud Development Kit (AWS CDK) v2
■ AWS CLIのインストールと初期設定
AWS CLI(コマンドラインインターフェイス )はAWSのクラウドサービスを管理するための統合管理ツールです。AWS CDKのアプリ操作の主要なツールです。
AWS CLIをインストールするコマンドは以下の通りです。
curl https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o awscliv2.zip
unzip awscliv2.zip
sudo ./aws/install
【参照】:Installing or updating the latest version of the AWS CLI - AWS Command Line Interface
AWS CLIがインストールできたら、続いて下記の公式サイトに従ってAWS CLIの初期設定を行います。
【参照】:AWS CLI の設定 | AWS Command Line Interface
■ CDKのインストール&初期設定
AWS CLIの初期設定が完了したら、AWS CDKをインストールします。インストールコマンドは以下の通りです。
$ sudo npm install -g aws-cdk
CDKが正しくインストールされたことを確認するには、以下のコマンドを用います。
$ cdk --version
2.44.0 (build bf32cb1)
【参照】:AWS CDK の開始方法 - AWS Cloud Development Kit (AWS CDK) v2
CDKがインストールできたら、続いてブートストラップの初期設定を行います。共有アカウントで既にブートストラップを行っている場合は不要です。ブートストラップを行うには以下のコマンドを使います。まず先にブートストラップの設定情報を確認します。
$ aws sts get-caller-identity
{
UserId: ユーザID,
Account: ACCOUNT-NUMBER,
Arn: arn:aws:iam::ACCOUNT-NUMBER:user/ユーザ名
}
上記の「ACCOUNT-NUMBER」の部分をブートストラップで使用します。
cdk bootstrap aws://ACCOUNT-NUMBER/REGION
REGIONは実際に利用するリージョン(ap-northeast-1など)を設定します。以上でCDKのインストールと初期設定は終了です。
【参照】:ブートストラッピング - AWS Cloud Development Kit (AWS CDK) v2
■ CDKによるライブラリー構築
構成ライブラリ開発では、peerDependenciesdevDependenciesとセクションを組み合わせて依存関係を指定する必要があります。CDKの設計上、依存関係のインストール、更新の際には十分にテストしましょう。
【参照】:依存関係の管理 - AWS Cloud Development Kit (AWS CDK) v2
AWS CDKを利用する際の注意点
ここまで、AWS CDKの概要やメリット、利用する手順などを解説しました。ここでは、AWS CDKを利用する上での注意点やデメリットについて紹介します。
プログラミング言語やAWSの基礎知識が必要
前述の通り、AWS CDKはTypeScriptやPython、Javaなどのプログラミング言語に対応しているため、それらを理解できる前提知識が欠かせません。また、AWSサービスやAPI、セキュリティなどの関連知識も必要です。
これらの知識を備え持っているITエンジニアにとっては、AWS CDKは直感的に扱いやすいサービスかもしれませんが、IT初心者からすると利用する上でのハードルがやや高く感じるかもしれません。
対応していないサービスもある
AWS CDKは数多くのサービスに対応していますが、全てに扱えるわけではありません。例えば、CloudFrontの場合はOAIの設定ができません。AWS CDKが対応していない場合はリソースの構築を手動で行う必要があるため、対応サービスについては注意が必要です。
コードが複雑化して可読性が低下することも
様々なプログラミング言語に対応するAWS CDKは、動的なインフラ構築の際に条件を設定できますが、その条件が複雑になるとコード自体も複雑になってしまいます。読みにくさや開発者以外は理解しにくいなどのデメリットが考えられます。
そういったことが起きないように、ある程度の知識を持った人材の確保が必要です。
AWSCDKを活用しよう
この記事では、クラウド環境開発の効率化が図れるAWS CDKをテーマに、その特徴やメリット、利用料金や利用手順などについて解説しました。
AWS CDKは普段利用しているプログラミング言語を用いてAWS Cloudformationと連携させることで、クラウドインフラの開発や環境構築をさらに効率化させることができ、その分ソフトウェア開発に注力することができます。AWSの無料ツールであるCDKをぜひ利用してみましょう。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから