43. IoT Edge でファイルを Blob Service にアップロードする…シリーズ開始
はじめに
前回までの記事で、IoT デバイスアプリの場合の D2C メッセージでは送信不可能なサイズのファイルアップロード方法を解説してきました。
今回から、Azure IoT Edge の場合のアップロード方法を試していきます。
基本、Blob on IoT Edge という仕組みを使うのですが、実践での活用を想定した、マニアックかつ深~く探求しながら実際に試していく事を趣旨とする、この定期購読マガジンでは、単に Blob on IoT Edge を試すだけでは、当然私のハートが収まらないので、実践的なシナリオをベースに使えそうな構成を想定して試していく事にします。
全体構成
何故 D2C メッセージで送信不可能なサイズのファイルをアップロードする理由、注意点は、前々回の記事でちょっと諄く解説しておきましたね。
今回は、それに加えて、Azure IoT Edge の特徴を加味した考察を加えてみます。
Azure IoT Edge の特徴は何と言っても、Azure IoT Edge デバイスのセットアップ後の任意の時点で、様々な機能を実装する Azure IoT Edge Module(Docker Container)を後付けできる、つまり、機能拡張やバグフィックスなどの機能更新が自由自在にできるところでしょう。そういう仕組みを提供してくれるので、サービス側の Blob Storage への画像等のファイルをアップロードする以前に、その IoT Edge デバイス上で動いているどれかの IoT Edge Module が RTSP Stream からの画像切り出しによって生成された画像ファイルを、同一の IoT Edge デバイス上で動いている他の複数の IoT Edge Module で、画像の自動加工や、画像 AI 適用による何らかのインシデント抽出等が行える可能性があるわけです。
そんな特徴を踏まえて、下図のような構成をゴールに、パート毎に試していく事にします。
RTSP2Image Server
他の Azure IoT Edge Module に対し、HTTP REST API で画像情報を提供する
HTTP REST API がコールされた時点の RTSP Stream から切り出した画像を提供する
Image Uploader
RTSPImage Server から取得した画像データをファイル化し、Blob on IoT Edge にアップロードする
画像 AI 起動等の拡張を想定した雛形的なプロトタイプ実装で、Blob on IoT Edge の使い方を試す
次回から、この二つの Azure IoT Edge Module を順番に作って試していく予定です。
Blob on IoT Edge について
Blob on IoT Edge の詳細は、「Azure IoT Edge 上の Azure Blob Storage を利用してエッジにデータを格納する」で解説されています。
基本的には、Microsoft Azure 上で利用可能な Azure Blob Storage サービスの簡略化されたエミュレータ的な機能を、Azure IoT Edge 上に配置して使える仕組みです。
IoT Edge に配置された Blob on IoT Edge とサービス側の Azure Blob Storage を紐づけることにより、Blob on IoT Edge にアップロードしたファイルが自動的に、サービス側の Azure Blob Storage 上にアップロードされる設定が可能です。
IoT Edge と Azure IoT Hub や Azure Blob Storage をつなぐのはインターネットです。インターネットはそもそもがベストエフォートなインフラなので、何らかの障害によりネットワークが切断されてしまう事も当然あります。IoT Edge はネットワークがつながらない時、D2Cメッセージをキューイングして接続が再開された時点で送信する機能を持っていますが、Blob on IoT Edge も同様にネットワークが切れている場合には、Azure Blob Service へのアップロードをネットワークの接続が再開されるまで待ってくれる機能を持っています。結果として利用者側のコードは、ネットワークの接続状況を意識しないロジックを組めるので便利です。前回の記事で紹介した IoT デバイスアプリのコードの場合は、アプリロジックとして、ネットワークが切れているときの再送処理の作り込みが必要なのでご注意ください。
Azure IoT Edge ゲートウェイに接続されたダウンストリーム IoT デバイスアプリのファイルアップロード
前回の記事で紹介した方法では、IoT デバイスアプリが直接 Azure IoT Hub と Azure Blob Storage とインターネットを介して接続できなければなりません。
第31回の記事から試した、IoT Edge をゲートウェイとしてローカルネットワークで接続するダウンストリームの IoT デバイスアプリは、インターネットには接続不可なので、同じ仕組みを利用することはできません。
この点については、Blob on IoT Edge の活用で解決する方法も模索する予定です。
最後に
あれ?これで終わり?一切試してないよね…という声が聞こえてきそうですが、今回はこれで終わりにします。次回からの記事、お楽しみに
ここから先は
Azure の最新機能で IoT を改めてやってみる
2022年3月にマイクロソフトの中の人から外の人になった Embedded D. George が、現時点で持っている知識に加えて、頻繁に…
この記事が気に入ったらチップで応援してみませんか?