AWS Lambda 便利だ。急に Ruby から Java のライブラリを使わないといけなくなった。
そこで AWS Lambda に Java のライブラリに登録し、それを Ruby から AWS SDK for Ruby 経由で呼び出す。
Ruby 側の雰囲気は↓のような形。
# ぜんぜんわからないけど雰囲気で書いた Ruby のコード (動かしてない) require 'aws-sdk' # v2 # invoke('super-function', 'special-version', { param1: 123 }) # => { ... } def invoke(fn, qualifier, event) access_key_id = ENV['AWS_ACCESS_KEY_ID'] secret_access_key = ENV['AWS_SECRET_ACCESS_KEY'] region = ENV['AWS_REGION'] credentials = Aws::Credentials.new(access_key_id, secret_access_key) client = Aws::Lambda::Client.new(region: region, credentials: credentials) response = client.invoke({ function_name: fn, invocation_type: 'RequestResponse', log_type: 'None', client_context: nil, payload: JSON.generate(event), qualifier: qualifier, }) JSON.parse(response.payload.string) end
エラーチェックとかしていないので雰囲気だけ。まじめにやるならリファレンスを見ると良い。
http://docs.aws.amazon.com/sdkforruby/api/Aws/Lambda/Client.html#invoke-instance_method
Java 側は面倒くさいので書かない。
急に謎の力が働いて「 Java のライブラリで処理しろ」ということになったら、 AWS Lambda でごまかせるかもしれないという話。