Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Azure Blob Storage on IoT Edge

linyixain
December 27, 2022

Azure Blob Storage on IoT Edge

linyixain

December 27, 2022
Tweet

More Decks by linyixain

Other Decks in Technology

Transcript

  1. 自己紹介 ・林 宜憲(@linyixian) ・2016~ MVP for Internet of Things ・所属

    (株)リンシステムズ ・ほぼソフトウェアエンジニアのはずだけど、MVP受賞カテゴリーはハードウェア・・・・ ・仕事も業務システムの開発がメイン。たまにサーバー構築もしたり・・・ ・IoT Algyan関西支部で活動しています。
  2. Azure Blob Storage on IoT Edgeの特徴 ・Edgeデバイス上でBlob Storageサービスが提供されます。 ・BlobはEdgeデバイス上のローカル領域に格納されます。 ・ブロックBlob及び追加Blobが利用できます。

    ・Edgeデバイス上のBlob StorageにはAzure Storageクライアントライブラリを使用してアクセスできます。 ・ローカルのBlob StorageからAzure Blob Storageへ自動的にアップロードすることができます。 ・アップロード完了後にローカルのBlobを自動削除することができます。
  3. Azure Blob Storage on IoT Edge IoT Edge デバイス edgeAgent

    edgeHub Blob Storage on IoT Edge Custom Module Blob Storage Storage Explorer
  4. 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からデプロイします
  5. モジュールツインの設定例 { "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 //アップロード完了時にデータを自動的に削除するかどうか } }
  6. Linuxのコンテナユーザーにディレクトリアクセスを許可する sudo chown -R 11000:11000 /srv/containerdata:/blobroot sudo chmod -R 700

    /srv/containerdata:/blobroot Storage Explorerの接続文字列 DefaultEndpointsProtocol=http;BlobEndpoint=http://<host device name>:11002/<your local accountname>; AccountName=<your local account name>;AccountKey=<your local account key>;
  7. サンプルプログラム(抜粋) 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)
  8. 参考 ・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