Amazon Web Services ブログ
AWS クラウド開発キット (CDK) – Java と .NET 用がご利用可能に
本日は、新たに一般利用が可能になったAWS クラウド開発キット (AWS CDK) のJava と .NET サポートについて発表します。AWS CDK はオープンソースソフトウェアの開発フレームワークで、AWS CloudFormation を通してユーザーのクラウドアプリケーションリソースを作ったり、プロビジョンしたりします。 さらに、AWS CDK はTypeScript and 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 環境や、1 つ以上のスタックのコレクションであるアプリケーションにデプロイできます。
AWS CDKには、AWS を表すコンストラクトを収容しているAWS コンストラクトライブラリーが含まれています。
AWS CDK の使用方法
私は、手作りの YAML や JSON のCloudFormation テンプレートよりも、シンプルなキュー作成時に AWS CDK を使うつもりです。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 をインストールします。CLI では、cdk init
などのコマンドを実行し、言語スイッチをパスできます。つまり私は、.NET と csharp
言語スイッチ付きのサンプルアプリを使用しています。
cdk init sample-app --language csharp
もしも .NET よりも Java を使用したい場合は、--language
を java
に切り替えます。
cdk init sample-app --language java
ターミナルにいるので、VS Code 内の現在のフォルダを開くショートカットとなるコード
を入力します。もちろん、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)を作成し、そしてtopicを作成し、最後にtopicに Amazon Simple Notification Service (SNS)を追加します。
これでコード入力が完了しました。次にこのコードをデプロイします。この作業をするとき、AWS CDKは NET コードをAWS CloudFormation テンプレートに変換し、コンパイルして、プロジェクトを実行します。
もしただ単にこれをデプロイするだけの場合は、アプリケーションを取得するコマンド cdk synth
を AWS CDK が提供し、コンパイルし、実行し、そして CloudFormation テンプレートをアウトプットできるように、CloudFormation テンプレートを実際に見ないでしょう。
これは標準的な 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 をインストールして、お好きな言語で挑戦してみてはいかがですか?