AWSコラム

AWSエンジニアのためのブログメディア

AWSのCDKとは?Pythonで記述してリソース管理を快適にしよう

2021年07月16日

AWS CDKとは?


AWS CDK(Cloud Development Kit)とは、プログラミング感覚でAWSのリソースを定義・管理できるツールとなります。以下にて、もう少し詳しく見ていきましょう。

AWSにおけるリソース管理

AWSに限らず、クラウド開発におけるリソース管理は、非常に重要なタスクとなります。

AWSで開発を進めていくと、当然リソースの数は増えていきますが、開発環境、テスト環境、ステージング環境と、工程が進むに従って当然これらのリソースを同じように構成・管理しなくてはなりません。

開発途中で構成の変更が生じた場合、ある環境だけ変更の適用が漏れていれば大変なことになります。

そこで、AWSにはCloudFormationというサービスがあり、AWSリソースに関するテンプレートを設定ファイルに記述することで、上記のヒューマンエラーを防ぎつつ各環境のリソースを一括管理できるようになります。

ただ、このCloudFormationは設定ファイルであるがゆえに、どうしても記述が冗長になりがちで、しかもIDEのように補完機能が使えないというデメリットがあります。

そこでご紹介したいのが、今回取り上げるAWS CDKです。

AWS CDKを使うメリット

AWS CDKを使う一番のメリットは、AWS CloudFormationに比べて記述量が少なくて済み、リソース管理に割く時間を大幅に短縮できることです。

AWS CDKは、今回取り上げるPythonの他、TypeScript、JavaScript、Java、C#の各言語に対応しており、これらの中から好きな言語を選んでコードを記述することで、CloudFormationテンプレートに変換、デプロイされるという仕組みになっています。

そして、ループ処理のようなプログラミングロジックを記述したり、デフォルトを省略したりすることで記述量を削減できるほか、IDEの補完機能を使うことでコーディングの時間短縮にもなるのです。

AWS CDKの構成

AWS CDKの構成を簡単にご説明しますので、軽くイメージを掴んでいきましょう。

まず、AWS CDKアプリにおいて、一つ以上のCloudFormationのスタック(リソースの集合体)を定義します。そして、スタックの中でコンストラクタを使ってEC2インスタンスなどのAWSの各種リソースを定義していくことになります。

AWS CDKの導入


AWS CDKのメリットを理解して頂いたところで、ここからはその導入手順についてお伝えしていきます。今回はAI開発言語として人気のある、Pythonを使った例についてご紹介します。

Node.jsのインストール

まず前提条件として、AWS CDK自体はTypeScriptで書かれているため、PythonへのマッピングのためにNode.jsのインストールが必要となります。

こちらからNode.jsのインストーラをダウンロードして、ウィザードに従ってインストールしてください。

コマンドラインより「node -v」及び「npm -v」というコマンドを実行し、それぞれバージョン情報が表示されればインストール完了です。因みに、npm(Node Package Manager)というのは、JavaScript系のパッケージ管理ツールです。

AWS CDKのインストール

先ほどインストールしたnpmコマンドを使って、AWS CDKをグローバルにインストールします。

以下のコマンドを実行してください。

正しくインストールされていることを確認するため、バージョン情報を表示します。

初期設定

テストプロジェクト用のディレクトリを作成します。今回は、「test-cdk」という名前で設定します。

言語をPythonに設定してCDKプロジェクトを作成します。なお、この際にgitの初期化に関する警告が表示されることがありますが、ここでは特に問題ないので気にしなくても大丈夫です。

ディレクトリ内に作成されたPython仮想環境をアクティベートします。

プラットフォームがWindowsの場合は、上記の代わりに以下のコマンドを実行します。

必要なPythonモジュールをインストールします。

AWS CDKを使った環境構築


AWS CDKを使う準備ができたので、ここからは実際にPythonのコードを記述して環境構築してみましょう。今回は、S3バケットとEC2インスタンス(附随してVPCとセキュリティグループも含めて)を作成してみます。

パッケージのインストール

Pythonのパッケージ管理システムpipを使って、CDKを利用する上で必要となるcoreパッケージと、S3及びEC2のライブラリパッケージをインストールします。

リージョンの指定及びimport文の追加

S3バケットとEC2インスタンス作成のコードを記述します。その前に、プロジェクトディレクトリ内の「app.py」を編集してデプロイ先のリージョンを指定しておくと良いでしょう。

プロジェクト名ディレクトリ配下の「プロジェクト名スタックファイル(今回の場合は「test_cdk/test_cdk_stack.py」)」を編集します。

S3バケットの作成

test_cdk/test_cdk_stack.pyのコメントテキスト「# The code that~」以下にコードを記述します。

VPC、セキュリティグループの作成

上記に続けてVPC、セキュリティグループを作成します。

EC2インスタンスの作成

更に続けてEC2インスタンスを作成します。

AWSCloudFormationテンプレートの合成とスタックのデプロイ

コードが記述できたので、AWS CDKで定義されたスタックごとに、AWS CloudFormationテンプレートを生成します(これを「合成」と呼びます)。

次に、スタックをデプロイします。但し、AWS CDKを環境に初めてデプロイするときは、「ブートストラップスタック」をインストールする必要があるので、以下のコマンドを実行します。

スタックをデプロイするには、以下のコマンドを実行します。なお、スタックが一つしかない場合はパラメータでのスタックの指定は不要です。

なお、通常のプログラムはコードを作成・修正した場合はビルドが必要ですが、AWS CDKはビルドが自動化されているので、必要ありません。

AWS CDKを使ってみよう


今回は、AWS CDKを使って、Pythonのコード記述でAWSの環境を構築する手順をご紹介しました。

AWS CDKを使うことで、AWSのリソース管理を簡潔にコード記述でき、環境ごとに共通のリソース構成を適用できます。

是非、ご自身の慣れ親しんだ言語でAWS CDKを使ってみてください。


AWS分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)
FEnetからご応募→夢テクノロジー入社でお祝い金最大120万円プレゼント

Search

Popular

reccomended

Categories

Tags