Reference · Tools
Microsoft Azure Storage
Manage blobs and containers in Azure Blob Storage. Upload, download, list, and delete blobs and containers.
The Microsoft Azure Storage node manages blobs and containers in Azure Blob Storage — uploading, downloading, listing and deleting — with SharedKey authentication and pagination on listings. A typical build is archiving generated reports into a container each night and pruning old ones.
- Node type
- Action (binary)
- Parameters
- 29
- Outputs
- Output, Error
- Credentials
- Microsoft Azure Storage API
Microsoft Azure Storage
Manage blobs and containers in Azure Blob Storage
Overview
Full blob and container management through the Azure Blob Storage REST API, across two resources. Blob covers create (upload from binary data or copy from a URL), delete, get (download) and list with pagination. Container covers create with name validation, delete, read properties, and list with pagination.
Blob download writes the file to a binary property on the output item; blob create reads binary data from an upstream item or has Azure copy the content server-side from a URL. Requests are signed with a SharedKey signature against API version 2021-12-02.
Category: Data & Storage
Tool Name: microsoft_storage
Version: 1
Appearance: Icon: lucide-HardDrive | Color: #0078D4
Node Type
Action (Binary) — handles file/binary data operations
Input / Output
| Direction | Port(s) |
|---|---|
| Input | Input |
| Output | Output, Error |
Credentials
This tool requires Microsoft Azure Storage API credentials. See the Credentials Guide for setup instructions.
Resources
| Resource | Value |
|---|---|
| Blob | blob |
| Container | container |
Operations
Both resources offer the same four operation values; the Resource selector decides what they act on.
| Operation | Value | Description |
|---|---|---|
| Create | create | Create a new blob or replace an existing one |
| Delete | delete | Delete a blob |
| Get | get | Retrieve data for a specific blob (download) |
| Get Many | getAll | Retrieve a list of blobs |
| Create | create | Create a container |
| Delete | delete | Delete a container |
| Get | get | Retrieve data for a specific container |
| Get Many | getAll | Retrieve a list of containers |
Parameters
Blob: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Container Name | string | Yes | — | Name of the container to create the blob in. Supports expressions. |
| Blob Name | string | Yes | — | The name of the new or existing blob. Supports expressions like {{ $json.filename }}. |
| From | options | Yes | binary | Whether to upload from binary data on the input item or copy from a URL. |
Options: binary, url | ||||
| Binary Property | string | Yes | data | Name of the binary property containing the file to upload. Names are case-sensitive — see the upstream node’s Binary Data panel for the exact names to use. (shown when From is binary) |
| URL | string | Yes | — | URL to copy the blob contents from (server-side copy). Supports expressions. (shown when From is url) |
| Options | collection | No | {} | Blob properties, metadata and policies to set on creation. |
| — Access Tier | options | No | Hot | The tier to set on the blob (Hot, Cool, Cold, Archive). |
Options: Archive, Cold, Cool, Hot | ||||
| — Blob Type | options | No | BlockBlob | The type of blob to create. (shown when From is binary) |
Options: BlockBlob, PageBlob, AppendBlob | ||||
| — Cache Control | string | No | — | Sets the blob cache control value. |
| — Content CRC64 | string | No | — | CRC64 hash for integrity verification. |
| — Content Encoding | string | No | — | Sets the blob content encoding. |
| — Content Language | string | No | — | Sets the blob content language. |
| — Content MD5 | string | No | — | Sets the blob MD5 hash for integrity verification. |
| — Content Type | string | No | — | Sets the blob content type. |
| — Encryption Context | string | No | — | Blob system metadata. Max 1024 chars. Valid for accounts with hierarchical namespace. (shown when From is binary) |
| — Encryption Scope | string | No | — | Encryption scope for encrypting the request contents. |
| — Expiry Option | options | No | Absolute | Expiration option for accounts with hierarchical namespace. |
Options: Absolute (Expiry Time must be specified), NeverExpire | ||||
| — Expiry Time | string | No | — | ISO 8601 datetime when the blob should expire (e.g. 2025-12-31T23:59:59Z). |
| — Filename | string | No | — | Override the filename in Content-Disposition header. |
| — Immutability Policy Date | string | No | — | Retention-until date (ISO 8601). The blob is protected from modification until this date. (shown when From is binary) |
| — Immutability Policy Mode | options | No | unlocked | Immutability policy mode for the blob. (shown when From is binary) |
Options: locked (users cannot modify the policy), unlocked (users can change the policy) | ||||
| — Lease ID | string | No | — | Required if the blob has an active lease. |
| — Legal Hold | boolean | No | false | Whether to set a legal hold on the blob. (shown when From is binary) |
| — Metadata | fixedCollection | No | { metadataValues: [] } | Name-value pairs to associate with the blob as metadata. |
| — Field Name | string | No | — | Metadata key. |
| — Field Value | string | No | — | Metadata value. |
| — Origin | string | No | — | Origin for CORS headers on the response. |
| — Tags | fixedCollection | No | { tagValues: [] } | Tags to set on the blob. |
| — Tag Name | string | No | — | Tag key. |
| — Tag Value | string | No | — | Tag value. |
Blob: Delete
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Container Name | string | Yes | — | Name of the container the blob is in. Supports expressions. |
| Blob Name | string | Yes | — | Name of the blob to delete. Supports expressions. |
| Options | collection | No | {} | Lease handling. |
| — Lease ID | string | No | — | Required if the blob has an active lease. |
Blob: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Container Name | string | Yes | — | Name of the container the blob is in. Supports expressions. |
| Blob Name | string | Yes | — | Name of the blob to download. Supports expressions. |
| Binary Property | string | No | data | Name of the binary property to write the downloaded blob to. Names are case-sensitive — see the upstream node’s Binary Data panel for the exact names to use. |
| Options | collection | No | {} | Lease handling and response shaping. |
| — Lease ID | string | No | — | Required if the blob has an active lease. |
| — Origin | string | No | — | Origin for CORS headers on the response. |
| — Simplify | boolean | No | true | Whether to return a simplified version of the response metadata. |
| — UPN | boolean | No | false | Whether to transform Microsoft Entra object IDs to User Principal Names. Valid for hierarchical namespace accounts. |
Blob: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Container Name | string | Yes | — | Name of the container to list blobs from. Supports expressions. |
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of blobs to return. (shown when Return All is false) |
| Options | collection | No | {} | Extra fields, filters and response shaping. |
| — Fields | multiOptions | No | [] | Additional fields to include in the response. |
Options: copy, deleted, deletedwithversions, immutabilitypolicy, legalhold, metadata, permissions, snapshots, tags, uncommittedblobs, versions | ||||
| — Filter | multiOptions | No | [] | Filter types for hierarchical namespace accounts. |
Options: deleted, files, directories | ||||
| — Simplify | boolean | No | true | Whether to return a simplified version of the response. |
| — UPN | boolean | No | false | Whether to transform Microsoft Entra object IDs to User Principal Names. |
Container: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Container Name | string | Yes | — | Name of the new container (3-63 chars, lowercase alphanumeric and hyphens, no consecutive hyphens). Supports expressions. |
| Options | collection | No | {} | Public access level and metadata for the new container. |
| — Access Level | options | No | — | Public access level for the container. |
Options: blob (public read access for blobs only), container (full public read access for container and blob data), empty (private — no public access, the default) | ||||
| — Metadata | fixedCollection | No | { metadataValues: [] } | Name-value pairs to associate with the container as metadata. |
| — Field Name | string | No | — | Metadata key. |
| — Field Value | string | No | — | Metadata value. |
Container: Delete
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Container Name | string | Yes | — | Name of the container to delete. Supports expressions. |
Container: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Container Name | string | Yes | — | Name of the container to get properties for. Supports expressions. |
| Options | collection | No | {} | Response shaping. |
| — Simplify | boolean | No | true | Whether to return a simplified version of the response. |
Container: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of containers to return. (shown when Return All is false) |
| Options | collection | No | {} | Extra fields and a name filter. |
| — Fields | multiOptions | No | [] | Additional fields to include in the response. |
Options: metadata, deleted, system | ||||
| — Filter (Prefix) | string | No | — | Filter results to only containers with a name beginning with the specified prefix. |
All Operations
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Max Concurrency | number | No | 10 | Maximum number of items to process concurrently. |
Output Data
Results are merged into the input item’s JSON, so the incoming fields stay available downstream, and binary data on the input item is forwarded.
| Operation | Output |
|---|---|
blob / create, delete and container / create, delete | One item carrying the Azure response headers parsed into JSON — the request’s etag, lastModified, encryption flags and similar. |
blob / get | One item carrying name, a properties object and metadata when the blob has any; the blob’s bytes are written to the binary property you named, alongside any binary already on the item. |
blob / getAll | One item per blob. An empty container produces one item carrying an empty blobs array. |
container / get | One item carrying name, a properties object and metadata when the container has any. |
container / getAll | One item per container. An account with no matching containers produces one item carrying an empty containers array. |
A downloaded blob’s JSON looks like this:
{
"name": "reports/2024/summary.pdf",
"properties": {
"contentType": "application/pdf",
"contentLength": 148213,
"lastModified": "Mon, 04 Nov 2024 10:12:31 GMT",
"etag": "0x8DCFC2A1B3E4F56"
},
"metadata": { "author": "user123" }
}
Simplify (on by default for Get and Get Many) trims the property set to the commonly used fields; turn it off to receive everything Azure returned.
Usage Examples
- Download a blob from Azure Storage
- Upload a binary file to an Azure container
- Create a blob from a URL (server-side copy)
- List all blobs in a container
- Create a new Azure Storage container
- Delete a blob from Azure Storage
- Get container properties
- List all containers in a storage account
Example Configuration
Upload binary data from an upstream node, with metadata and tags:
{
"type": "microsoft_storage",
"parameters": {
"resource": "blob",
"operation": "create",
"containerName": "uploads",
"blobName": "{{ $json.filename }}",
"from": "binary",
"binaryPropertyName": "data",
"options": {
"accessTier": "Hot",
"contentType": "{{ $json.mimeType }}",
"metadata": {
"metadataValues": [
{ "fieldName": "uploadedBy", "fieldValue": "{{ $json.userId }}" }
]
},
"tags": {
"tagValues": [
{ "tagName": "category", "tagValue": "user-upload" }
]
}
}
}
}
Have Azure copy a blob straight from a public URL:
{
"type": "microsoft_storage",
"parameters": {
"resource": "blob",
"operation": "create",
"containerName": "my-container",
"blobName": "copied-file.jpg",
"from": "url",
"url": "https://example.com/source-image.jpg",
"options": {
"accessTier": "Cool",
"contentType": "image/jpeg"
}
}
}
Download a blob into a named binary property:
{
"type": "microsoft_storage",
"parameters": {
"resource": "blob",
"operation": "get",
"containerName": "my-container",
"blobName": "{{ $json.name }}",
"binaryPropertyName": "downloadedData",
"options": {
"simplify": true
}
}
}
List every blob in a container, including metadata and snapshots:
{
"type": "microsoft_storage",
"parameters": {
"resource": "blob",
"operation": "getAll",
"containerName": "my-container",
"returnAll": true,
"options": {
"simplify": true,
"fields": ["metadata", "snapshots"]
}
}
}
Delete a blob that holds an active lease:
{
"type": "microsoft_storage",
"parameters": {
"resource": "blob",
"operation": "delete",
"containerName": "my-container",
"blobName": "unwanted-file.txt",
"options": {
"leaseId": "lease-id-123"
}
}
}
Create a container with public blob access and metadata:
{
"type": "microsoft_storage",
"parameters": {
"resource": "container",
"operation": "create",
"containerName": "new-container",
"options": {
"accessLevel": "blob",
"metadata": {
"metadataValues": [
{ "fieldName": "purpose", "fieldValue": "data-storage" },
{ "fieldName": "department", "fieldValue": "engineering" }
]
}
}
}
}
Read a container’s properties:
{
"type": "microsoft_storage",
"parameters": {
"resource": "container",
"operation": "get",
"containerName": "my-container",
"options": {
"simplify": true
}
}
}
List containers whose names start with a prefix:
{
"type": "microsoft_storage",
"parameters": {
"resource": "container",
"operation": "getAll",
"returnAll": false,
"limit": 50,
"options": {
"fields": ["metadata"],
"filter": "project-"
}
}
}
Delete a container:
{
"type": "microsoft_storage",
"parameters": {
"resource": "container",
"operation": "delete",
"containerName": "old-container"
}
}
Error Handling
| Mode | Behavior |
|---|---|
| stop | Halts workflow on first error |
| continue | Skips failed items, passes successful ones through |
| errorPort | Routes failed items to Error output port |
Tips
Manage blobs and containers in Azure Blob Storage with SharedKey auth. Supports binary upload/download, container lifecycle, and blob listing with pagination.
- Container names are strict. Three to 63 characters, lowercase letters, digits and single hyphens — no consecutive hyphens. Create fails on anything else before the request is sent.
Fromdecides the upload path.binaryreads the named binary property off the incoming item and sends the bytes;urlhands Azure a source URL and lets the service copy it, so no data passes through the workflow.- Several options are binary-only. Blob Type, Encryption Context, the immutability policy fields and Legal Hold apply only when From is
binary. - Create replaces. Writing to an existing blob name overwrites it rather than failing.
- Leases block writes. If a blob has an active lease, supply its Lease ID on create, delete or get, or the request is rejected.
- Access Level governs public exposure. Leave it unset for a private container;
blobexposes blob contents to anonymous readers,containerexposes the listing too. - Metadata and tags are different things. Metadata is a free-form name-value bag stored with the blob; tags are indexed and searchable in Azure.
- Get Many fans out — each blob or container becomes its own item, so downstream nodes process them individually.
Frequently asked questions
Why did creating my container fail immediately?
Container names are strict: three to 63 characters, lowercase letters, digits and single hyphens, with no consecutive hyphens. The node rejects anything else before the request is even sent.
How do I control where the upload content comes from?
The From setting decides: `binary` reads the named binary property off the incoming item and sends the bytes, while `url` hands Azure a source URL and lets the service fetch it.
Can it handle large listings?
Yes — blob listing supports pagination, so a container with many blobs can be enumerated fully rather than truncated.
Which credential does it need?
A Microsoft Azure Storage API credential using SharedKey authentication.
Build with the Microsoft Azure Storage node
Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Microsoft Azure Storage API credentials first.
Open BusyBotLast updated . Spotted something wrong? Tell us.