iothub-explorerをAzure Cloud Shellで使えるようにする

Azure IoT Hubの状況をモニタリングするのに、AzureポータルとDevice Explorerを使うのが定番です。特に、C2DメッセージはAzureポータルでは確認できないので、Device Explorerを使うことになります。

残念なことに、このDevice ExplorerWindows専用。MacユーザーやLinuxユーザーがC2Dメッセージをモニタリングしたいときは、Device Explorerの代わりにiothub-explorerというCLIツールを使うことになりますが、Node.jsをインストールしてiothub-explorerをインストールと、ちょっと煩わしい。

気になるが良い手が無いなぁと思っていたところ、先日、ビデオ会議でソラコム松井さん、松下さんから「Azure Cloud Shell良いよ」と、素晴らしい方法を聞いたので、試してみました。(松井さん、松下さんありがとうございます!!)

Azure Cloud Shellのセットアップ

Webブラウザから操作できるシェル。Azure管理コマンドを実行するために用意されたシェル環境のようで、Azureポータルのアカウントに紐づいて環境作成できます。(複数セッションの同時接続は可能。) サーバーは無料で、ストレージは有料。Azureストレージアカウントに課金されます。

azure.microsoft.com

Azureポータルの上部にある、コンソールっぽいアイコンをクリックしてください。

f:id:matsujirushix:20180331164750p:plain

すると、画面が上下分割されて下部にAzure Cloud Shellが表示されるので、Bash (Linux)をクリックしてください。

f:id:matsujirushix:20180331165452p:plain

ストレージの作成をクリックしてください。

f:id:matsujirushix:20180331165626p:plain

このように、Linux (Bash)が起動すれば成功です。

f:id:matsujirushix:20180331165851p:plain

なお、一番右のフォルダのようなアイコンをクリックすると、Azure Cloud Shellだけのウィンドウを開くことができます。また、そのURLをブックマークしておくと、Azureポータルを立ち上げずに直接Azure Cloud Shellを開くことも可能です。

f:id:matsujirushix:20180331170152p:plain

iothub-explorerのインストール

公式の手順はnpm install -g iothub-explorerと、グローバル領域(/usr/local/lib/node_modules)にインストールしていますがAzure Cloud Shellではここにインストールすることはできません。いくつか代案がありますが、、、ここではグローバル領域を変更してインストールしましょう。

mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
npm install -g iothub-explorer

iothub-explorerの起動

~/.npm-global/bin/iothub-explorer

すばらしい。

f:id:matsujirushix:20180331174048p:plain

PATHの追加

いちいち~/.npm-global/...と入力するのは面倒なので、.bashrcにPATH追加を追記しておくと少し便利です。

vi ~/.bashrc

f:id:matsujirushix:20180331172918p:plain

PATH=~/.npm-global/bin:${PATH}

. ~/.bashrc

Azure Cloud Shellの削除

一度、Azure Cloud Shellをセットアップすると、Azureストレージアカウントに課金されます。ストレージを使っているので。

もういらないよ!というときは、リソースグループのcloud-shell-storage-xxxを削除しましょう。

f:id:matsujirushix:20180331173332p:plain