Edited at

Amazon Linux にNode-REDを入れる手順

More than 1 year has passed since last update.


あえてのAmazon Linux

IoTやデータ連携でお馴染みになった「Node-RED」、チュートリアルではAWS上ではUbuntu Serverを使用する方法が紹介されています。AWSなので、Amazon Linux上にNode-REDを入れる手順を確認しましたので書き記しておきます。

EC2上のAmazon Linuxを使う理由は、独自にシェルスクリプトやPythonで作ったプログラムをNode-REDで呼び出したり、API Gateway以外のトリガーを使用したいためです。


導入手順

EC2で、t2.microまたはt2.smallでインスタンスを作成します。Amazon Linux AMI 2017.09.1 (HVM), SSD Volume Type - ami-da9e2cbcを使用しました。セキュリティグループでは、ポート 1880を開放します。Node-REDは、ポート1880を利用します。

ユーザー名 ec2-userでSSH接続後、下記コマンドを実行していきます。

$ sudo su

# yum update && yum upgrade
# curl -sL https://rpm.nodesource.com/setup_8.x | bash -
# yum install nodejs
# npm install -g --unsafe-perm node-red

この時点でNode-REDを起動することができました。EC2のパブリック DNS (IPv4)に、:1880をつけてアクセスすればNode-REDが起動しますが、ログイン機能が有効になっていません。このままでは外から丸見えです。

次は、ログイン機能を有効にします。

# nano /usr/lib/node_modules/node-red/settings.js

adminAuth のコメントを解除し、認証機能を使用可能にします。

デフォルトのユーザー名は、admin。パスワードはハッシュ化されており、デフォルトは、password です。変更するには、公式サイトのSecurityのページを確認してください。


自動化

サーバー再起動時にNode-REDを自動起動させるために、PM2をインストールします。

下記を実行することで、再起動時にNode-REDが自動起動し、EC2のパブリック DNS (IPv4)に、:1880をつけてアクセス可能です。

# npm install -g pm2

# exit

$ pm2 start /usr/bin/node-red
$ pm2 startup amazon
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup amazon -u ec2-user --hp /home/ec2-user

$ sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup amazon -u ec2-user --hp /home/ec2-user
$ pm2 save


Node-REDログイン

EC2のパブリック DNS (IPv4)に、:1880をつけてアクセスすると、Node-REDのログイン画面が表示されます。

先ほど、adminAuthで設定したユーザー名とパスワードでログインします。

node-red_login.PNG

ログイン後、何も無いNode-REDのフロー定義画面が表示されますので、フローを作り、画面右上の「デプロイ」を実行することで、フローが作動します。デプロイすればNode-REDの画面が閉じていてもフローは動作し続けます。

たとえば、以下はオープンソースマーケティングオートメーション Mauticで新規顧客が登録されたときにWebhookを使ってSlack通知するフローです。こちらの記事にサンプルがあります。

node-red_mautic2slack.PNG


ノードの追加

Node-REDは、画面左側のメニューにあるノードと呼ばれる箱を配置することでフローを定義し、Slack通知のようなデータ連携やIoTデバイスのデータを呼び出すことができます。

ノードの追加は、画面右上の「三」→「パレットの管理」→「ノードを追加」にて、ノードを検索、検索後「ノードを追加」をクリックすると追加できます。

もしくは、SSH接続し、npm install でも追加可能です。

確認できたノード


  • iont-node-red-contrib-aws-iot-hub


    • AWS IoTと接続し、読み書きするためのノード



  • node-red-contrib-ibm-watson-iot


    • IBM Watson IoT Platformと接続



  • node-red-node-watson


    • IBM CloudのWatsonサービスを呼び出す



  • node-red-contrib-slack


    • Slackとの連携



  • node-red-contrib-play-audio


    • Webブラウザ経由で音声データの読み上げ



  • node-red-contrib-browser-utils


    • Webブラウザ経由でマイクが使用可能



Node-RED Library からノードやサンプルフローを検索することもできます。


まとめ

Node-REDはNode.js上でどこでも動かせるのが強み。ということで、IBM Cloud以外、AWSでも容易に動かすことができます。ビジネスでデータ連携を行う場合、何度も試行錯誤を繰り返しますし、その度にスクリプトやプログラムを作り直すことは非現実的です。

Node-REDを使うことで何度もトライし、データ連携やIoTデバイスとの連携を行うことができます。