2015年7月12日日曜日

EclipseでAWS Lambda Functionプログラミング(Java)

Lambdaについて、意外とJava版の情報が少ないので書いてみました。なお、本記事は新サービスである「Amazon API Gataway」を視野に入れた書き方をしています。

Lambdaとは
簡単にいうと、AWS上で動かすことのできるスクリプトです。AWSで提供されているサービスのイベントに合わせてプログラムを実行できます。例えば、
  • DynamoDBにデータが登録された際に〜な処理をする
みたいなこともできるわけです。以前までは、Javascript(node.js相当)で記述できましたが、先月、Javaも対応になりました。さらに、、、後日記事にするつもりですが、このたび、Amazon API Gatawayというサービスも登場し、Lambdaと連携できるようになったということもあり、今、ホットな話題と言えるでしょう。

Eclipseでの手順
ざっと書くと下記の通りです。

0.事前準備
Eclipse for AWS Pluginは入れておいて下さい。で、当然ですが、AWSのアカウントはもっており、Lambdaの実行権限のあるユーザアカウントを用意しておいて下さい。また、S3も使えるようにアカウント設定しておきましょう。

1.AWS Lambda Java Project でプロジェクトを生成
プロジェクトの作成でAWSのところに、AWS Lambda Java Projectがありますので、これをクリックして作成します。


2.InputTypeの設定に注意
Lambdaは基本的にAWSのイベントを扱いますから、どのようなイベントに対応するのかをInputTypeで設定します。今回はカスタムにしました。そして、Stringを授受するファンクションとしました。


3.サンプルコードを書き換えます
すでにサンプルはできていますので、出力がnullになっているので何か文字を返すように書き換えましょう。
4.アップロードと実行
プロジェクトを右クリックすることで、AWSへアップロードや実行をするメニューが出ます。

実行を選ぶとAWSへのアップもされるようです。

5.Deployするリージョンとファンクション名を指定
Lambdaにおいてどういうファンクション名にするのか指定します。既存のものに上書きすることもできます。なお、現段階では東京リージョンは使えない模様。

6.動作環境設定
最初は細かい設定が必要です。S3も使うようなのですが、何のためかは不明。コードの実体を保存する場所かと思いましたが、そういうわけではない模様。メモリとタイムアウトの設定については、どういう値がベターなのかは今後の要調査ですね。Roleについては、今回はAPIGatewayのを前提してます。


7.実行

実行時には、入力パラメータを求められるので必ず何かを書いて下さい。どうやらファンクションとのやりとりはJSON形式で行われているらしく、何もなしで実行するとJSON Parserエラーが出ます。今回はStringを受け取るファンクションを作ったわけですから、必ずStringを渡す必要があるのです。


実行結果は出力パネルに出ます。

ちなみに、、、、、この実行というのは、本番環境での実行になりますので注意して下さい。今回のサンプルでは、文字列を受け取るようになっているので、実行時の入力には必ず何か文字を渡して下さい。

以上、ざっと書いてみましたが、これとAmazon API Gatawayを組み合わせることで、面白いことができそうです。それについては後日。