Amazon Web Services ブログ

AWS クラウド開発キット (CDK) – Java と .NET 用がご利用可能に



本日は、新たに一般利用が可能になったAWS クラウド開発キット (AWS CDK) のJava と .NET サポートについて発表します。AWS CDK はオープンソースソフトウェアの開発フレームワークで、AWS CloudFormation を通してユーザーのクラウドアプリケーションリソースを作ったり、プロビジョンしたりします。 さらに、AWS CDKTypeScript 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 を使用したい場合は、--languagejava に切り替えます。

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を作成し、最後にtopicAmazon Simple Notification Service (SNS)を追加します。

これでコード入力が完了しました。次にこのコードをデプロイします。この作業をするとき、AWS CDKは NET コードをAWS CloudFormation テンプレートに変換し、コンパイルして、プロジェクトを実行します。

もしただ単にこれをデプロイするだけの場合は、アプリケーションを取得するコマンド cdk synthAWS 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 をインストールして、お好きな言語で挑戦してみてはいかがですか?

— Martin