AWS Lambda(Java)をVSCodeのGradleプロジェクトで開発する方法

AWS Lambda(Java)をVSCodeのGradleプロジェクトで開発する方法

Lambdaの言語は色々ありますが、Java8,11がサポートされています。

最近Javaもコールドスタート対策されて約10倍くらい早くなったらしいので、今後Lambdaの言語の選択肢としてJavaも出てくるかもしれません。

今回試しにJava8で簡単なLambdaを作成し、時間を計測しようとしたのですがいくつか注意点があったのでメモです。

GradleをC:\gradleにインストールしている前提です。

項目 バージョン
Gradle 6.0.1

jarまたはzip形式でアップロードする必要がある

GradleプロジェクトをビルドしてJar形式にしてアップロードする必要があります。

zipでも良いようですがこちらは、Gradleタスクの設定が必要?と思われます。※マニュアルにはそう書いています

マネージメントコンソールでソースが見れない

node.jsばかりしていたので気づかなかったですが、JavaやC#の場合はマネジメントコンソールでソースを見ることができません。

これはやはりコンパイルが必要だからでしょう。node.jsのようなスクリプトは修正してすぐ動作が確認できるのでマネジメントコンソールでも修正が可能ですが、やはりJavaなどはそうはいかないですね。

VSCodeでJavaを開発する

VSCodeでJava開発をする方法 」を参考にしてください。今回はGradleプロジェクトを作成したいので以下コマンドでインタラクティブに作成していきます。

※プロジェクト名とフォルダ名は同じにします

これで以下のようなファイル構成がsampleフォルダ配下に作成されます。

AWS Lambda(Java)をVSCodeのGradleプロジェクトで開発する方法

sampleフォルダをVSCodeで開いてGradleプロジェクトに適したプラグインを入れます。

VSCodeのプラグイン

「Java Extension Packインストール」を入れます。※マストです

「Gradle Tasks」を入れるとサイドパネルでビルドタスクがGUIで実行できます。

Gradle Tasksを入れておくと便利です。

スケルトンコードが作成されたので実行する

ここまでいけたら実行してみます。

コマンド 内容
gradle run 実行する
gradle build ビルドする
gradle clean クリーンする

コマンドプロンプトからgradle runします。

これでVSCodeでGradleプロジェクトを実行することができました。

今回はこのGradleプロジェクトをjar or zip化してLambdaで実行したいので、build.gradleに必要なライブラリを2つ追加します。

参考サイト:Java 関数の ZIP デプロイパッケージの作成

次にタスクを追加します。

これでbuild.gradleを保存し、コマンドプロンプトからgradle buildを実行します。

依存関係のあるライブラリがダウンロード出来たら、以下のように表示されると思います。

AWS Lambda(Java)をVSCodeのGradleプロジェクトで開発する方法

成功したらGradleプロジェクト直下のbuild\distributions配下にzipファイルが作成されます。

このzipファイルをLambdaにアップロードするのですが、このままだとエラーになります。

build.gradle

App.javaの中身を編集する

実行されるクラスはいくつかお作法があります。

  • com.amazonaws.services.lambda.runtime.RequestHandlerをインプリメントする
  • handleRequestメソッドをオーバーライドする
  • インデックスハンドラ名は、package名.クラス名::handleRequestとする

今回の場合、インデックスハンドラ名は「confrage.App::handleRequest」となります。

簡単に以下のように作成しました。インプットは文字列で、それを数値にして返すだけです。

App.java

再度、ビルドしてzipファイルをアップロードします。インデックスハンドラ名変更も忘れずに行います。これで保存し、「テスト」を押します。

AWS Lambda(Java)をVSCodeのGradleプロジェクトで開発する方法

何らかのエラーが出た場合は、インプットの引数が間違えている可能性が高いです。今回であれば数値を文字列型にしておかないとエラーとなります。

AWS Lambda(Java)をVSCodeのGradleプロジェクトで開発する方法

再度、「テスト」をしてOKでした。

AWS Lambda(Java)をVSCodeのGradleプロジェクトで開発する方法

感想

簡単なhello world.を出力するプログラムを作成しようと思っただけなのに意外にもJavaは難しいという感じでした。

また、デフォルトでタイムアウト:15秒、メモリ:512MBとなっていたので、やはりnode.jsやGo言語と比較するとまだまだ遅いのかもしれません。

スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA