2017-05-19 Ruby なのに Java のライブラリを使えと言われた
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 でごまかせるかもしれないという話。