Edited at

【ハンズオン資料】IBM Bluemix OpenWhisk もくもく会

More than 3 years have passed since last update.

IBM Bluemix OpenWhiskのもくもく会資料。

・IBM Swift Sandbox - Xcodeをインストールせず、Swiftコードのテストが可能

 https://swiftlang.ng.bluemix.net

・IBM Swift KITURA - Swiftウェブアプリ開発プラットフォーム

 https://github.com/IBM-Swift/Kitura

・IBM Bluemix OpenWhisk

 http://www.ibm.com/cloud-computing/bluemix/openwhisk/

・IBM Bluemix OpenWhisk入門

 https://new-console.ng.bluemix.net/docs/openwhisk/index.html


事前準備(必ず確認してください。)

・IBM Bluemix アカウント取得。

 http://ibm.biz/bluemixfree

・CF(Cloud Foundry) CLI Install

 https://github.com/cloudfoundry/cli/releases

・Bluemix CLI Install

 http://clis.ng.bluemix.net/ui/home.html

・CLIを使う際には「pip」のインストールが必要。(Python 2.7)

 https://console.ng.bluemix.net/openwhisk/cli

・pipのインストール

 https://pip.pypa.io/en/stable/

・IBM Bluemixのリージョンや作業スペースを確認

スクリーンショット 2016-03-25 13.31.59.png


OpenWhisk アーキテクチャ

今回のハンズオンでは、このアーキテクチャを元にOpenWhiskの動きを理解(把握)していきたいと思います。

IBM Bluemix OpenWhiskのTrigger, Rule, Action, Invokeの役割や関係性を理解することで、皆様の業務上もしくは個人のアプリ(サービス)とどのように連携できてどんなメリットがあるのか、何が変わるのかを話し合いながら今回のハンズオンを楽しんでいただければと思います。

スクリーンショット 2016-04-26 15.17.11.png


Try OpenWhisk!

スクリーンショット 2016-04-26 1.49.52.png


OpenWhiskの初期画面

CLIやGUIでの開発、ログの確認、OpenWhiskについて学ぶことができる、4つのメニューがあります。

スクリーンショット 2016-04-26 1.52.44.png


ようこそOpenWhiskへ"Hello":CLI

下記の手順で開発環境の構築を完了しましょう。

https://console.ng.bluemix.net/openwhisk/cli

スクリーンショット 2016-04-26 10.24.15.png


OpenWhiskアクションの作成

アクションとは、IBM Bluemix OpenWhisk プラットフォームで実行されるステートレスなコード・スニペットです。JavaScript 関数、Swift 関数、または、Docker コンテナーにパッケージした実行可能なカスタム・プログラムをアクションにできます。

・hello.jsファイルを作成します。


hello.js

function main() {

return {payload: 'Hello world'};
}

・Create Action(アクション名:helloAction)

wsk action create helloAction hello.js

・Actionをクラウドに配置(Invok)

wsk action invoke --blocking helloAction

・Actionリストを表示

wsk activation list


Action upgrade

パラメーターを受け取るようにアクションを修正してみます。


hello.js

function main(params) {

return {payload: 'Hello, ' + params.name + ' from ' + params.place};
}

・Actionを更新

wsk action update hello hello.js

・パラメーターを設定し、Actionを起動(name:joohoun, place:Tokyo)

 ・"--result"オプションをつけることによって結果がする表示される。

wsk action invoke --blocking --result hello --param name 'joohoun' --param place 'Tokyo'

・パラメーターを固定させる

オプション「--param」を使って「place」を「Japan Tokyo」に設定することで、次回からは nameオプションのみで起動してもplaceが設定されます。

wsk action update hello --param place 'Japan Tokyo'

wsk action invoke --blocking --result hello --param name 'Yokoi'

※ この状態で、「place」を指定して実行すると、アクションにバインドされた値を上書きします。(固定された値は変更なし)


外部のAPIを呼び出す


weather.js

 var request = require('request');

function main(msg) {
var location = msg.location || 'Vermont';
var url = 'https://query.yahooapis.com/v1/public/yql?q=select item.condition from weather.forecast where woeid in (select woeid from geo.places(1) where text="' + location + '")&format=json';

request.get(url, function(error, response, body) {
var condition = JSON.parse(body).query.results.channel.item.condition;
var text = condition.text;
var temperature = condition.temp;
var output = 'It is ' + temperature + ' degrees in ' + location + ' and ' + text;
whisk.done({msg: output});
});

return whisk.async();
}


・Action Create

wsk action create weather weather.js

・地域を指定してActionを実行

wsk action invoke --blocking --result weather --param location 'Japan, Tokyo'

スクリーンショット 2016-04-26 14.06.02.png


Trigger&Rule

IBM Bluemix OpenWhisk のトリガーとルールにより、プラットフォームにイベント・ドリブン機能がもたらされます。外部および内部のイベント・ソースからのイベントは、トリガーを通じてチャネル設定され、ルールによって許可されたアクションがこれらのイベントに対応します。

【トリガー】

トリガーは、ある種のイベントに対して指定されたチャネルです。以下は、トリガーの例です。

・ロケーション更新イベントのトリガー。

・Web サイトへの文書アップロードのトリガー。

・着信 E メールのトリガー。

トリガーは、キーと値のペアのディクショナリーを使用して発生させる (アクティブ化する) ことができます。このディクショナリーは、イベント と呼ばれることもあります。アクションと同様に、トリガーを発生させるたびに、アクティベーション ID が生成されます。

【ルール】

ルールは 1 つのトリガーを 1 つのアクションに関連付けます。トリガーが発生するたびに、該当のアクションが、トリガー・イベントを入力として起動されます。

適切なルール・セットを使用して、単一のトリガー・イベントで複数のアクションを起動することや、 複数のトリガーからのイベントへの対応としてアクションを起動することが可能です。


トリガー作成と発生

・トリガー作成

wsk trigger create locationUpdate

・トリガーリスト出力

wsk trigger list

・トリガー発生

wsk trigger fire locationUpdate --param name "joohoun" --param place "Japan, Tokyo"


ルール:トリガーとアクションの関連付け

・ルールを作成

wsk rule create --enable myRule locationUpdate hello

・locationUpdate トリガー発生

 イベントを発生させるたびに、イベントのパラメーターを使用して hello アクションが呼び出されます。

wsk trigger fire locationUpdate --param name "joohoun" --param place "Japan, Tokyo"

・最新のアクティベーションをチェックして、アクションが呼び出されたことを確認

wsk activation list --limit 1 hello

wsk activation result {アクティベーション ID}


GUIでもAction、Trigger、Ruleを使えます。

スクリーンショット 2016-04-26 15.12.54.png


BMXUG(Bluemix User Group)コミュニティ

「Bluemix」の「今」をフォローしましょう!

・Facebook : Bluemixユーザーグループ

・Qiita : Bluemix Qiitaページ

・Doorkeeper:Doorkeeperコミュニティ

・Slack : Bluemix User Group(BMXUG)の交流用

・stackoverflow : stackoverflow(コミュニティQ&A)

・Twitter : #bmxug