Posted at

AWS Lambda JavaでJRuby

More than 3 years have passed since last update.


コード

コード一式は https://github.com/c9katayama/aws-lambda-jruby にあります。


使い方

githubからclone後、src/main/resources/main.rb にrubyコードを書きます。同ディレクトリ内のファイルは全てLambdaにデプロイされるため、必要なファイルはこのディレクトリに置きます。

stdlibは、JRubyに付属の標準ライブラリが入っています。このディレクトリはaddLibPathでパスが通っているので、ここに入っているrbファイルは

require 'yaml'

とするとmain.rbから使用することができます。


開発

rubyファイル作成時にローカルでテストしたい場合は、 src/test/java/AWSLambdaJRubyTestMain を実行します。

AWSLambdaJRubyは、Lambdaで受け取ったパラメータをJSONにし、Rubyのグローバル変数$lambda_argにセットを行います。rubyファイル内でLambdaのパラメータを取りたい場合は、$lambda_argから取り出します。

(サンプルのmain.rbはLambdaのパラメータをyaml化するコードになっています)


ビルド/デプロイ

./gradlew build 

でビルドを行います。build/distributionsフォルダにaws-lambda-jruby.zipが出来ていると思うので、AWS上でLambdaファンクションを作成後、zipをAWS Lambdaへアップロードします。

この際、Handlerの設定がありますが、AWSLambdaMain::handler を設定します。