Slide 1

Slide 1 text

2022/12/26 YOSHINORI HAYASHI IOT ALGYAN エッジAI入門&活用シリーズ#5 『Azure Blob Storage on IoT Edge編』

Slide 2

Slide 2 text

自己紹介 ・林 宜憲(@linyixian) ・2016~ MVP for Internet of Things ・所属 (株)リンシステムズ ・ほぼソフトウェアエンジニアのはずだけど、MVP受賞カテゴリーはハードウェア・・・・ ・仕事も業務システムの開発がメイン。たまにサーバー構築もしたり・・・ ・IoT Algyan関西支部で活動しています。

Slide 3

Slide 3 text

Azure Blob Storage on IoT Edgeの特徴 ・Edgeデバイス上でBlob Storageサービスが提供されます。 ・BlobはEdgeデバイス上のローカル領域に格納されます。 ・ブロックBlob及び追加Blobが利用できます。 ・Edgeデバイス上のBlob StorageにはAzure Storageクライアントライブラリを使用してアクセスできます。 ・ローカルのBlob StorageからAzure Blob Storageへ自動的にアップロードすることができます。 ・アップロード完了後にローカルのBlobを自動削除することができます。

Slide 4

Slide 4 text

Azure Blob Storage on IoT Edge IoT Edge デバイス edgeAgent edgeHub Blob Storage on IoT Edge Custom Module Blob Storage Storage Explorer

Slide 5

Slide 5 text

Blob Storageモジュールのデプロイ 準備 ・IoT Edgeデバイス ・IoT Hub ・Azure Storage Explorer(編集>「Azure Stack APIを対象にする」に切り替える) ・Azure Storage(アップロード先のコンテナを任意に作成) ・ローカル Blob Storage アカウント名(任意) ・ローカル Blob Storage アカウントキー(https://generate.plus/en/base64で作成) ・ローカル Blob Storage コンテナ名(任意) Azure Potalからデプロイします

Slide 6

Slide 6 text

デモ

Slide 7

Slide 7 text

コンテナ―の作成オプション例 { "HostConfig": { "Binds": [ "/srv/containerdata:/blobroot" ], "PortBindings": { "11002/tcp": [ { "HostPort": "11002" } ] } } }

Slide 8

Slide 8 text

モジュールツインの設定例 { "deviceAutoDeleteProperties": { “deleteOn”: true, //自動削除 “deleteAfterMinutes”: 5, //自動削除までの待機時間 “retainWhileUploading”: true //アップロード中の期限切れ時Blobを保持するかどうか }, "deviceToCloudUploadProperties": { “uploadOn”: true, //アップロードを実行するかどうか “uploadOrder”: “OldestFirst”, //Blobをコピーする順序 “cloudStorageConnectionString”: “クラウドストレージアカウントの接続文字列", "storageContainersForUpload": { “localblobstorage”: { //ローカルBlob Storageのコンテナ名 “target”: “cloudblobstorage“ //クラウドBlob Storageのコンテナ名 } }, “deleteAfterUpload”: true //アップロード完了時にデータを自動的に削除するかどうか } }

Slide 9

Slide 9 text

Linuxのコンテナユーザーにディレクトリアクセスを許可する sudo chown -R 11000:11000 /srv/containerdata:/blobroot sudo chmod -R 700 /srv/containerdata:/blobroot Storage Explorerの接続文字列 DefaultEndpointsProtocol=http;BlobEndpoint=http://:11002/; AccountName=;AccountKey=;

Slide 10

Slide 10 text

サンプルプログラム(抜粋) import cv2 from datetime import datetime from azure.storage.blob import BlobServiceClient,BlobClient,ContainerClient container_name='localblobstorage' local_name='tmp.jpg' cn_string='DefaultEndpointsProtocol=http;BlobEndpoint=http://localhost:11002/<アカウント名>; AccountName=<アカウント名>;AccountKey=<アカウントキー>;’ serviceClient=BlobServiceClient.from_connection_string(cn_string) cv2.imwrite("tmp.jpg",frame) blob_name=d.strftime("%Y%m%d%H%M")+".jpg" blobClient=serviceClient.get_blob_client(container_name,blob=blob_name) with open(local_name,'rb') as data: blobClient.upload_blob(data)

Slide 11

Slide 11 text

参考 ・Azure Blob Storage on IoT Edgeのデプロイ https://learn.microsoft.com/ja-jp/azure/iot-edge/how-to-deploy-blob?view=iotedge-1.4 ・エッジでのBlob Storageについて https://learn.microsoft.com/ja-jp/azure/iot-edge/how-to-store-data-blob?view=iotedge-1.4 ・ジョンさんの解説動画 https://www.youtube.com/watch?v=nDCTiQjm4Uw&t=903s ・サンプルプログラム https://github.com/linyixian/uploadblob

Slide 12

Slide 12 text

ご清聴ありがとうございました