1.1.3.9. Things Cloudの拡張機能(microservice)を開発する¶
本項では、本システムの実装において必要なThings Cloudの拡張機能であるmicroserviceの開発手順を説明します。
なお、本書中の設定値の「< >」の表記については、ご利用の環境により各自入力いただく箇所となります("<"から">"までを設定値に置き換えてください)。
注釈
- 本項では、標準提供されていない「microservice」機能を利用しています。「microservice」のご利用にあたっては、提供環境や費用などの諸条件について個別対応とさせていただいております。「microservice」機能に関しては iot-app@ntt.com までご相談ください。案件相談、提供環境や費用などの諸条件に関しては iot-info@ntt.com までご相談ください。
microservice用にThings Cloudのユーザーを作成する¶
microserviceからThings Cloudに保存された計測データを読み込むため、Things Cloudにてmicroservice用のユーザーを作成します。
以下のURLにアクセスし、Things Cloudにログインします。
- URL: https://<Things Cloudのテナント名>.je1.thingscloud.ntt.com/
画面右上の[アプリケーション選択]ボタン(■が9つ並んだボタン)をクリックし、[管理]を選択します。
画面左のメニューより、[アカウント] > [ユーザー]を選択します。
画面右上の[ユーザーを追加]をクリックします。
表示された「新しいユーザー」画面にて、以下の情報を入力・選択し、[保存]をクリックします。
- 識別情報
ユーザー名: <任意のmicroservice用ユーザー名>
ステータス: 有効
ログイン エイリアス: <任意のログインエイリアス>
Eメール: <Things Cloudのパスワードをリセットするためのメールを受け取る際のメールアドレス>
名: <任意の名>
姓: <任意の姓>
電話番号: <任意の電話番号>
- ログインオプション
- 次回ログイン時にパスワードリセットを強制する: Off
- パスワードリセットのリンクをEメールで送信: Off
パスワード: <任意のパスワード>
パスワードの確認: <上記で設定したパスワードを再入力>
- グローバルロール
- [グローバル リーダー]のみチェックを入れる
「ユーザーが保存されました」と表示され、ユーザーリスト中に作成したユーザーが表示されていることを確認します。
現在のアカウントからログアウトし、新しく作成したアカウントでThings Cloudにログインできることを確認します。
- URL: https://<Things Cloudのテナント名>.je1.thingscloud.ntt.com/
以降の手順にて「ユーザー名」および「パスワード」が必要となるので、控えてください。
Things Cloudの認証情報を作成する¶
本項で実装するmicroserviceの処理内で、Things Cloudへアクセスする際に使用する認証情報を作成する手順です。
作業端末において、任意のエディタにて入力用の一時的なファイル(例:C:\input.txt)を作成し、以下を記述します。
<Things CloudのテナントID>/<microservice用ユーザーのユーザー名>:<microservice用ユーザーのパスワード>
注釈
- microservice用ユーザーのユーザー名/パスワードには「microservice用にThings Cloudのユーザーを作成する」で作成したユーザーのユーザー名/パスワードを入力してください。
コマンドプロンプトにて以下のコマンドを、上記で作成したファイル名とエンコード結果を格納する一時的なファイル(例:C:\output.txt)を指定して実行します。
> certutil -encode <入力用ファイル名> <出力用ファイル名>
(例) > certutil -encode C:\\input.txt C:\\output.txt
コマンドプロンプトに以下のメッセージが表示されることを確認します。
入力長 = XX(任意の値) 出力長 = XXX(同上) CertUtil: -encode コマンドは正常に完了しました。
出力用ファイルを開きます。 "-----BEGIN CERTIFICATE-----"と"-----END CERTIFICATE-----"で囲まれた文字列が「Things Cloudの認証情報」です。
microserviceの動作を確認する¶
本項で実装するmicroserviceの動作を説明します。
本項では、下記の動作をするmicroserviceを実装します。
- Things Cloudにアクセスし、実行日の前日分の計測データを取得
- 取得した計測データをCSVファイル化し、Wasabiオブジェクトストレージにアップロード
- 計測データを取得・CSVファイル化しWasabiオブジェクトストレージにアップロードするまでの処理を1日1回定時に実行
- API呼び出しされた際に、Berryサーバーの推論APIを実行し結果をAPI実行元にレスポンス
[作業端末]microserviceを作成する¶
作業端末にて、Things Cloudにデプロイするmicroserviceを作成する手順です。
あらかじめ、「1.1.3.1. 作業端末の事前設定をする - microserviceの作成準備をする」での事前準備がすべて完了していることをご確認ください。
以下の手順で作成するファイルについては「1.1.3.11. カスタムウィジェット・microserviceコード例を確認する - microservice用コードを確認する」にサンプルを掲載しておりますので、併せてご参照ください。
注釈
- 本項では、標準提供されていない「microservice」機能を利用しています。「microservice」のご利用にあたっては、提供環境や費用などの諸条件について個別対応とさせていただいております。「microservice」機能に関しては iot-app@ntt.com までご相談ください。案件相談、提供環境や費用などの諸条件に関しては iot-info@ntt.com までご相談ください。
- 本項では例として、開発用ディレクトリを「C:\tmp\microservice」としています。お使いの環境に合わせて読み替えてください。
microserviceを開発する¶
「1.1.3.11. カスタムウィジェット・microserviceコード例を確認する - microservice用コードを確認する」を参考に、開発用ディレクトリ内に以下のファイルを作成します。
注釈
- createCSV.tsの23行目には、Things Cloudの認証情報を入力する箇所があります。Things Cloudの認証情報は、「Things Cloudの認証情報を作成する」で作成したThings Cloudの認証情報を入力してください。
- routes.tsの7行目は推論APIの実行URLを入力する箇所があります。推論APIの実行URLは、「1.1.3.5. Node-AI Berryの環境を構築する - 学習モデルをアップロードする」で確認した「推論APIを実行するためのURL」を入力してください。
- wasabi.tsの12行目には、Wasabiオブジェクトストレージのバケット名を入力する箇所があります。Wasabiオブジェクトストレージのバケット名は、「1.1.3.3. Wasabiオブジェクトストレージを設定する - バケットを作成する」で作成したバケットの名前を入力してください。
- wasabi.tsの42行目には、Wasabiオブジェクトストレージのアクセスキーを入力する箇所があります。Wasabiオブジェクトストレージのシークレットキーは、「1.1.3.3. Wasabiオブジェクトストレージを設定する - Things Cloud用ユーザーを作成する」で控えた「Access Key」の値を入力してください。
- wasabi.tsの43行目には、Wasabiオブジェクトストレージのシークレットキーを入力する箇所があります。Wasabiオブジェクトストレージのシークレットキーは、「1.1.3.3. Wasabiオブジェクトストレージを設定する - Things Cloud用ユーザーを作成する」で控えた「Secret Key」の値を入力してください。
ライブラリのインストール・コンパイルをする¶
作業端末にてコマンドプロンプトを起動し、以下のコマンドを実行して開発用ディレクトリに移動します。
> cd C:\tmp\microservice
開発用ディレクトリにてコマンドプロンプトを起動し、以下のコマンドを実行して必要なライブラリをインストールします。
> npm install
開発用ディレクトリを確認し、以下のディレクトリ・ファイルが保存されていることを確認します。
- node_modules
- package-lock.json
以下のコマンドを実行し、TypescriptファイルをJavascriptファイルにコンパイルします。
> tsc -p .
開発用ディレクトリを確認し、以下のファイルが保存されていることを確認します。
- app.js
- app.js.map
- package-lock.json
- routes.js
- routes.js.map
- createCSV.js
- createCSV.js.map
- wasabi.js
- wasabi.js.map
- Create_Predictiondata.js
- Create_Predictiondata.js.map
Docker imageを作成する¶
「1.1.3.11. カスタムウィジェット・microserviceコード例を確認する - microservice用コードを確認する」を参考に、開発用ディレクトリ内にファイル「Dockerfile」を作成します。
作業端末にてコマンドプロンプトを起動し、以下のコマンドを実行して開発用ディレクトリに移動します。
> cd C:\tmp\microservice
以下のコマンドを実行し、Docker image「prediction-result-img」を構築します。
> docker build -t prediction-result-img .
注釈
- 「error during connect: This error may indicate that the docker daemon is not running.」と表示され、処理が完了しなかった場合はDockerが起動していないと推測されます。あらかじめインストールしたDocker Desktopを起動しコマンドを再実行してください。
以下のコマンドを実行し、Docker image「prediction-result-img」をtarアーカイブ「image.tar」として保存します。
> docker save -o image.tar prediction-result-img
作業端末のエクスプローラーより開発用ディレクトリを開き、「image.tar」が存在することを確認します。
アプリケーションを作成する¶
「1.1.3.11. カスタムウィジェット・microserviceコード例を確認する - microservice用コードを確認する」を参考に、開発用ディレクトリ内にマニフェストファイル「cumulocity.json」を作成します。
作業端末のエクスプローラーより開発用ディレクトリを開き、以下の2ファイルを選択して右クリック>[送る]>[圧縮(zip形式)フォルダー]をクリックします。
開発用ディレクトリ内に圧縮したZipファイルが存在することを確認します。
Zipファイルのファイル名を「prediction-ms.zip」に変更します。