OpenWhiskでもShell芸
先日、Severless Meetup Tokyo #2 に OpenWhiskのスピーカーとして参加させていただきました。このMeetupの楽しいところはLambdaだけでなくAzure やGoogleと行った様々な代表的な Serverless / FaaS / NoOps というものを一気に並べて見れることで非常に楽しめることでしょう。
そんな中でもAzure FunctionsのBashとかちょっと面白かったものが出ていたのでOpenWhiskでもやってみたいと思います。
OpenWhiskでは、Dockerアクションを作ることができます。このDockerアクションはいろいろな可能性があるのですがルールさえ守ればちょっとイレギュラーなことが実行できたりします。
適当なディレクトリで exec という実行権限 chmod +x exec
をつけた以下の内容のファイルを作ります。
#!/bin/sh
echo {\"msg\":\"Hello, `bash --version`\"}
次にこれをzipで固めます
zip action.zip exec
そして登録しましょう
wsk action create sh_test action.zip --docker
で実行してみます。
$ wsk action invoke sh_test --blocking --result
{
"msg": "Hello, GNU bash, version 4.3.42(1)-release (x86_64-alpine-linux-musl) Copyright (C) 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later \u003chttp://gnu.org/licenses/gpl.html\u003e This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law."
}
無事に動きましたね。実際に引数とかを取る場合にはなにせ `sh` ですのでJSONで渡ってくる文字列を操作するのは大変そうですが純粋に起動するだけであればこれで動くことになります。また他のOpenWhiskのアクション同様にAPIgateway経由でゴニョゴニョしても良いでしょう。
では、よいServerless生活を!