AWS CDKの基礎

こんにちは。 エキサイト株式会社で内定者アルバイトをしている平石です。

今回は、AWS CDKの基礎を勉強しましたので、まとめてみたいと思います。

前の記事

tech.excite.co.jp

AWS CDKとは?

公式ドキュメント(オープンソースの開発フレームワーク - AWS クラウド開発キット - AWS)によると、

AWS CDK(AWS Cloud Development Kit)は使い慣れたプログラミング言語を使用してクラウドアプリケーションリソースを定義するためのオープンソースのソフトウェア開発フレームワークです。

要は、これまで手作業でポチポチやっていたり、独自の言語や形式を使用してスクリプトを書いたりしてAWSのリソースを定義していたのを、我々が普段使っているプログラミング言語を使ってできるようにするためのものです。

サポートされている言語としては主にTypeScript、JavaScriptJavaPython、Goがあります。

基礎概念

AWS CDKは公式ドキュメントにて以下のような利点があることが述べられています。

こちらは日本語ドキュメントに記載されているため詳細はオープンソースの開発フレームワーク - AWS クラウド開発キット - AWSを参照してください。

AWS CDKは内部的にCloudFormationを使用しています。CloudFormationもインフラストラクチャをコードとして扱うことができますが、多くの場合テンプレートと呼ばれる独自の形式(JSONYAML形式)で記述します。

CloudFormationに対するCDKのメリットはTypeScriptやJavaScriptJavaPython、Goなどのプログラミング言語を使用できる点だと思われます。

普段サービス開発で使用している言語と同じ言語を使えますし、if文やfor文、クラスやメソッドなどを用いてより柔軟にかつわかりやすくリソースを生成することができます。

AWS CDKの重要な要素

AWS CDKにおける最上位概念はAWS CDKアプリケーションです。

AWS CDKアプリケーションでは一つ以上のスタックを定義します。ここでいうスタックはCloudFormationにおけるスタックと同じ概念です。

スタックの中にはコンストラクトと呼ばれるコンポーネントを定義します。このコンストラクトはクラス(型)として表現されており、一つ以上の具体的なAWSリソース(Amazon S3バケット、ラムダ関数、Amazon DynamoDBテーブルなど)を定義します。

それらのコンストラクトをインスタンス化して、他のコンストラクトのクラスのメソッドの引数に入れるなどして結びつけることができます。

コンストラクトには3つの種類があります。

  • AWS CloudFormation-only or L1 (layer 1)
    • この種類のコンストラクトは、AWS CloudFormationから直接生成されたもので、そこで定義するリソースと直接対応しています
  • Curated or L2
  • Patterns or L3
    • この種類のコンストラクトは、複数のリソースを同時に宣言できるクラスであり、その中のリソース間はすでに結び付けられています。設定項目は重要なパラメータに集約されており、特定のユースケースに対して高速にリソースを作成することができます。

終わりに

今回は、AWS CDKの基礎について簡単にご紹介しました。

では、また次回。

次の記事

tech.excite.co.jp

参考文献