Edited at

Azure Web AppでNode-REDを動かす手順

More than 1 year has passed since last update.

 今回は、Azure Web App上でNode-REDを動かしてみます。最初にAzure、Web AppとNode-REDの相性の良さについて説明します。


AzureとNode-REDの相性の良さ

 Microsoftは、公式にNode-RED向けのAzure IoT Hub SDK(処理ノード)を提供しているため、Node-RED上でAzure IoT Hubを安心して(?)使うことができます。また、コミュニティからAzure向けのSQL ServerDocumentDBCognitive Servicesの処理ノードも活発に開発されており、Azureのサービスと簡単に連携できます。Microsoftは、これら処理ノードを詰め合わせたDockerイメージも配布しており、Azure上のサービスを利用する1つの環境として、Node-REDに力を入れているようです。


Web AppとNode-REDの相性の良さ

 Node-REDは、BluemixのCloudFoundryAWSのElastic Beanstalk向けのアプリケーションとして発展してきた背景から、PaaS向けの開発方法論である12 Factor Appに沿った実装になっています。そのため、AzureにおいてはPaaSであるWeb Appが最も適した実行環境であると考えます。これまでNode-RED公式サイトには、AzureのVMで動作させる手順しかなく、Web Appで動かす手順がなかったため、今回試してみました。


Web AppへNode-REDをデプロイする手順

 まず、Azureのポータルから、新規と書かれている左上の「緑のプラス」をクリックします。続いて「Web + モバイル」をクリックし、「Web App」を選択します。

1.png

 次に「アプリ名」と「リソースグループ」を入力します。この例では共に「nodered451」を入力しています。続いて「App Serviceプラン/場所」にて「Japan East」の「F1 Free」を選択します(もしNode-REDを常時稼働させたい場合は「S1 Standard」を選択してください)。最後に「ダッシュボードにピン止めする」にチェックを入れ、「作成」ボタンをクリックします。

3.png

 30秒ほど経過しデプロイが完了した後、ダッシュボード上のアイコンをクリックします。するとアプリケーションの管理画面に入りますので「アプリケーション設定」をクリックします。Node-REDはブラウザとの通信にWebソケットを用いますので「Webソケット」をオンにします(前の手順で「S1 Standard」を用いた場合は、ここで「常時接続」もオンにします)。最後に「保存」をクリックします。

8.png

 次に、GitHubからNode-REDのソースコードをデプロイするため、アプリケーションの管理画面から「デプロイオプション」をクリックします。「ソースの選択」にて「外部リポジトリ」、「リポジトリのURL」として「https://github.com/zuhito/node-red-webapp.git」を入力し、「OK」をクリックします。もう一度「デプロイオプション」をクリックするとデプロイの進捗が表示されます。4分ほど経過し「アクティブ」と表示されたらデプロイが完了です。

6.png

 最後にアプリケーションの管理画面から「概要」を選択し、右上に表示されているURLの「http://<アプリ名>.azurewebsites.net/」をクリックします。

9.png

 すると、いつもの(?)Node-REDのフローエディタの画面に遷移します。

10.png

 このNode-REDはAzure向けであるため、標準でAzure IoT HubノードやCognitive Servicesノードがインストールされています。ぜひこのNode-RED環境で、IoTのプロトタイプや人工知能APIを用いたアプリケーションを開発してみてください。

※他のデプロイ方法

Azure版Node-REDのGitHubリポジトリhttps://github.com/zuhito/node-red-webapp.gitにある「Deploy to Azure」ボタンからウィザード形式でデプロイすることもできます。ただこの場合でもWebSocketをオンにする操作は必要です(WebSocketをオンにしたARMテンプレートの記述方法を把握されている方がいらっしゃいましたら記述方法を教えてほしいですm(__)m)。