世間様はLamb段階になったらしいので、AWS Lambda便利実行ツール Lambchop
のv0.1.0をリリースしました。
https://github.com/winebarrel/lambchop
lambchop (0.1.0): It is a tool that invoke AWS Lambda function from the local machine as a normally script. http://t.co/4DPfo6xgjy
— RubyGems (@rubygems) July 19, 2015
これは何?
AWS LambdaのFunctionを手元で動かしているっぽく見せるツールです。
以下のようなシーバンとマジックコメント入れておくと、ローカルスクリプトのようにLambda Functionを登録→ログをtailできます。
#!/usr/bin/env lambchop /* role: arn:aws:iam::822997939312:role/lambda_basic_execution handler: test.handler */ console.log('Loading event'); exports.handler = function(event, context) { console.log('value1 = ' + event.key1); console.log('value2 = ' + event.key2); console.log('value3 = ' + event.key3); context.succeed('Hello world!'); };
v0.0.13からの変更点
戻り値のサポート
「ねんがんのもどりちをてにいれたぞ」なので、サポートしました。
具体的にはlamchop-cat
でinvoke_async
の代わりにinvoke
を呼び出すようにしました。
特にオプションを指定しなければ、payloadに戻り値が入ります。
$ echo '{"key1":100, "key2":200, "key3":300}' | lambchop-cat test --- status_code: 200 function_error: payload: '"Hello World"'
非同期実行は-t event
オプションをつけるとできます。
$ echo '{"key1":100, "key2":200, "key3":300}' | lambchop-cat test -t event --- status_code: 202 function_error: payload: ''
Tailモード
invoke
がTialっぽいモードをサポートしたのでlambchop-cat
も対応しました。
$ echo '{"key1":100, "key2":200, "key3":300}' | lambchop-cat test -l tail status_code: 200 function_error: payload: '"Hello world!"' log_result: |- 2014-11-23T08:06:53.212Z xxxxxxxxxxxxxxxx Loading event START RequestId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 2014-11-23T08:06:53.330Z xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx value1 = 100 2014-11-23T08:06:53.330Z xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx value3 = 300 2014-11-23T08:06:53.330Z xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx value2 = 200 END RequestId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx REPORT RequestId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Duration: 117.54 ms Billed Duration: 200 ms Memory Size: 128 MB Max Memory Used: 9 MB
DryRun
invoke
がDryRunをサポートしたのでlambchop-cat
も対応しました。役に立つかはわかりません。
$ echo '{"key1":100, "key2":200, "key3":300}' | lambchop-cat test -t dry_run --- status_code: 204 function_error: payload: ''
フィードバックをお待ちしています。 どうぞご利用ください m(_ _)m