常田です。
Las Vegasで開催しているInterConnect2016にてサーバレスで動く実行環境が発表されました。従来の、Cf Runtime,Container,VirtualMachineにつづく4番目の実行環境です。
さっそく、OpenWhisk を動かしてみました。
何者であるのかまださっぱり理解していませんが「Hello」をみてみないわけには行きません。
手順に従って進めていきます。
また既にCFコマンドが導入されている環境で実施しましたのでクリーン環境では少し手順が違うかもしれません。
申込画面が表示されるので申し込むと4,5時間で使えるようになりました。
まずは以下の場所よりツールを導入しましょう
wskコマンドラインツールを導入します。
sudo pip install --upgrade https://new-console.ng.bluemix.net/openwhisk/cli/download
Bluemixの自身のnamespaceに登録をします。(以下はxxxxにしてますが画面に出ている内容で入力します)
wsk property set --auth xxxxxx --namespace "xxxxxxx"
さて次のコマンドをなげると { message: hello}が戻ってきました。
vagrant@vagrant-ubuntu-trusty:~$ wsk action invoke /whisk.system/samples/echo -p message hello --blocking --result
{
"message": "hello"
}
ダッシュボード画面を見るとこのようになっています。
きちんと動いているようです。
次にマニュアルを参考にプログラム(javascript)を動かしてみましょう。
- https://new-console.ng.bluemix.net/docs/openwhisk/index.html
以下のコードを hello.js として保管します。
/**
* Hello world as an OpenWhisk action.
*/
function main(params) {
var name = params.name || 'World';
return {payload: 'Hello, ' + name + '!'};
}
次にこのjavascriptを登録します。(参考に返り値も含めて載せておきます)
vagrant@vagrant-ubuntu-trusty:~/work/open$ wsk action create hello hello.js
ok: created action hello
早速呼び出してみます。
vagrant@vagrant-ubuntu-trusty:~/work/open$ wsk action invoke hello --blocking --result
{
"payload": "Hello, World!"
}
このように action invoke hello で先ほどのhello.jsの結果が帰ってきています。
次に引数付きで実行します。
vagrant@vagrant-ubuntu-trusty:~/work/open$ wsk action invoke hello --blocking --result --param name Fred
{
"payload": "Hello, Fred!"
}
実行できました。
登録されてたactionのリストはGUIでは見えないですね。あくまでこちらはダッシュボードの位置付けでしょうか。
vagrant@vagrant-ubuntu-trusty:~/work/open$ wsk list
entities in namespace: bluemixiphone-contest_dev
packages
actions
/bluemixiphone-contest_dev/hello private
triggers
rules
wskコマンドで色々操作は出来そうです。
さて実際にこれらをどうやって使えるのでしょうか?
こちらにAPIのドキュメントがありました。
次回はこちらを参考にCurlやPythonから呼び出してみたいと思います。
それにしてもサーバレスでJavascript,Swiftが動く環境がIBMから登場するとは2年前には想像もできませんでした。しかもSwift言語。そしてこのOpenWhisk自体がプロプライエタリ製品ではなくOpenSourceで公開されているとうことがここ最近のIBMの大きな変化と受け止められますね。