This post was authored by @Arpita Duppala, PM on the High Availability and Storage team. Follow her @arnuwish on Twitter.
Azure Blob Storage on IoT Edge is a light-weight Azure consistent module which provides local block blob storage, and comes with deviceToCloudUpload and deviceAutoDelete functionalities. It is available in public preview with support for Windows AMD64, Linux AMD64, Linux ARM32 and Linux ARM64
deviceToCloudUpload is a configurable functionality, which allows you to automatically upload the data from your local blob storage to Azure with intermittent internet connectivity support. It allows you to:
- Turn ON/OFF the this feature
- Choose the order in which the data will be uploaded to Azure like FIFO or LIFO
- Specify the Azure Storage account where the data will be uploaded.
- Specify the containers you want to upload to Azure.
- Choose the ability to delete the blobs immediately, after upload to cloud storage is finished
- Do full blob upload(using
operation) and block level upload(using
Put Block List
When your blob consists of blocks, it uses block-level upload to copy your data to Azure. Here are some of the common scenarios:
- Your application updates some blocks of a previously uploaded blob, this module will upload only the updated blocks and not the whole blob.
- The module is uploading blob and internet connection goes away, when the connectivity is back again it will upload only the remaining blocks and not the whole blob.
deviceAutoDelete is a configurable functionality where this module automatically deletes your blobs from local blob storage when deviceAutoDelete value expires. It allows you to:
- Turn ON/OFF the this feature
- Specify the time in minutes
- Choose the ability to retain the blob while it is uploading if deleteAfterMinutes value expires
Azure Blob Storage on IoT Edge – Version 1.2 (June 20, 2019)
In the diagram below, we have an edge device running Azure IoT Edge runtime. It is running a custom module to process the data collected from the sensor and saving the data to the local blob storage account. Because it is Azure-consistent, the custom module can be developed using the Azure Storage SDK to make calls to the local blob storage, or simply use the pre-existing applications like Azure Storage Explorer. Then it will automatically upload the data from specified containers to Azure while making sure your IoT Edge device does not run out of space.
This scenario is useful when there is a lot of data to process. For example, data from industries who captures survey and behavioral data. It is efficient to do the processing of data locally because there is a lot of data that is continuously being captured. Azure Blob Storage on IoT Edge module allows you to store and access such data efficiently, process if required, and then automatically upload that data to Azure and automatically deletes the data when upload is finished from IoT Edge device making space for new data.
Release notes and configuration details for Version 1.2
We heard your feedback, below are the additions and improvements in this version.
- deviceToCloudUpload and deviceAutoDelete functionalities are now available for Windows AMD64
- Added feature to automatically delete the blobs from IoT device after they are uploaded to Azure
- Includes bug fixes and performance improvements
- Desired properties setting names are changed. With this build old names will not work.
- Upgrade from 1.1 to 1.2 is not supported. Make sure a new volume binding is used when the new image is deployed.
Here are the release notes and configuration details in docker hub for this module.
- Integration with EventGrid, to light up the event-driven computing scenario on IoT Edge platform
- cloudToDeviceDownload: On-demand downloading the data from Azure to IoT edge device
- Support more sophisticated deviceToCloudUpload and deviceAutoDelete policies, based on early customer feedback
- Expanding the scope of Azure Storage consistency, e.g. Append Blob support
- Blob store on edge - local SMB
- Blob store on edge - local NFS
Your feedback is very important to us, to make this module and its features useful and easy to use. Please share your feedback and let us know how we can improve.
You can reach out to us at email@example.com