常田です

一日遅れ気味なAdventCalendarの記事です。

OpenWhiskは非常に便利なFunction as a Service期待しています。様々な呼び出し方があるのですがRESTAPI経由で呼び出す事でもっと便利につかえます。今回はNode-REDというビジュアルプログラミング環境(?)から呼び出して利用してみたいと思います。

この機能を利用するとちょっとした複雑なことをNode-REDの node を使うこと無く処理を実行できて便利です。

以下の処理をOpenWhisk上に登録して実行してみましょう

function main(params) {
    //console.log(whisk.getAuthKey());
    return { text: params.message };
}

引数がJSON型式で期待されており { “message” : “sample” } で入力されると “sample” が表示されます。これをNode-RED上に登録してみたいと思います。

BluemixのNode-RED上には初期状態から node が登録されています。これは OpenWhiskの nodejsライブラリを利用して作られているnodeになります。

screen-shot-2016-12-03-at-06-16-36

今回は実際に以下のようなフローを作ります。

screen-shot-2016-12-03-at-06-18-07

このOpenWhiskのノードを編集していきます。

screen-shot-2016-12-03-at-06-19-25

ここでAPIkeyを求められますがこれまでOpenWhiskを利用されたことがあるかたもあまり馴染みが無いのではないでしょうか。実は個々人に払い出されており wsk コマンドで確認することが出来ます。

$ wsk property get
whisk auth      430c8b7.....
whisk API host      openwhisk.ng.bluemix.net
whisk API version   v1
whisk namespace     atg_tokida
whisk CLI version   2016-08-03T11:40:27Z
whisk API build     2016-12-01T16:15:42Z
EOF occurred in violation of protocol (_ssl.c:590)
whisk API build     Cannot determine API buildno

上記の whisk auth の値がキーとなりますので内容をコピーして入力しておきます。
具体的なActionなどの選択は特に迷うことはないと思います。

screen-shot-2016-12-03-at-06-21-53

今回はこのようにしています。ここでは test01 というアクションを実行します。今回のサンプルでは Injection nodeを入力にしていますが json型式でデータを渡したいのでそのように編集しています。

screen-shot-2016-12-03-at-06-23-25

さあ実行してみましょう。

screen-shot-2016-12-03-at-06-24-35

無事に実行された結果が表示されましたか?

このようにOpenWhiskノードを利用することで簡単にNode-REDの機能を保管する事が出来るため便利に利用することが出来ます。実際に実行されるノードもNodejsが動くサーバとは別になりますのでパフォーマンス的に良いことも有ると思います。