ServerlessでJavaアプリケーションをデプロイしちゃおう

この記事では、Serverless Framework(以下Serverless)を使ってサンプルのWebアプリケーションをAWS LambdaとAmazon API Gatewayにデプロイします。

Serverlessとは、マイクロサービスで構成される、サーバレスなアプリケーションの構築を支援するフレームワークです。
現在のところ、AWS Lambdaで動作するアプリケーションで使うことができます。(Azure FunctionsやGoogle CloudFunctionsへの対応はWIPとなっています)

Node.jsとPythonのランタイムはこれまでもサポートされていましたが、現在ベータ版として公開されているv1.0では新しくJavaについてもサポートされています。

それでは、一足早く体験してみましょう。

インストール

node.js

適当な方法でインストールし、npmコマンドが実行できることを確認してください。
ドキュメント上バージョンの指定はありませんが、私はv4.4.7で動作を確認しました。

Serverless

betaを指定してインストールします。

AWS設定

もしまだの方は、aws configureコマンドを実行してKey ID, Access Keyの設定を行ってください。
一般的な手順ですので、手順の詳細は割愛します。

Serverlessのテンプレート作成

GradleとMavenを使用することができます。

Gradleの場合、下記のディレクトリ構成になっているはずです。

リージョン変更

デフォルトではus-east-1が使われるので、ap-northeast-1に変更します。

ますはserverless.ymlです。コメントアウト行を有効にし、リージョンを書き換えます。

次にserverless.env.ymlです。

ビルド&デプロイ

正しくデプロイされたことをLambdaの実行によって確認しましょう。

"Your function executed successfully!"という文字列を含む、Json形式のレスポンスが返ってきたと思います。

削除

デプロイを実行した際にCloudFormationのスタックが作成されているので、それを削除します。

Webアプリにする

API Gatewayと連携させて、Webアプリケーションにしてみましょう。

serverless.ymlを編集します。

デプロイします。

上記のデプロイコマンドのレスポンスとして、endpointのURLが返ってきています。
curlでアクセスします。

先ほどと同様に"Your function executed successfully!"のメッセージを含むJson形式のレスポンスが取得できれば成功です。

動作確認が終われば、こちらも先ほどと同様に後始末をしておきましょう。

むすびに

非常に簡単にAPI GatewayとLambdaを連携させたWebアプリケーションをデプロイすることができました。
Serverlessは、デプロイされるアプリケーションの詳細には関与しないため、既存のアプリケーションへの導入が比較的容易かと思います。

また、以前のバージョンとは設定ファイルの書き方が大きくなりますが、v1.0の方が洗練され、より使いやすくなった印象を受けました。

参考資料

https://github.com/serverless/serverless

Comments are closed, but you can leave a trackback: Trackback URL.