Reference · Tools

Microsoft Azure Storage

Manage blobs and containers in Azure Blob Storage. Upload, download, list, and delete blobs and containers.

Action (binary) Data & Storage v1 Binary data

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

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires Microsoft Azure Storage API credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Blobblob
Containercontainer

Operations

Both resources offer the same four operation values; the Resource selector decides what they act on.

OperationValueDescription
CreatecreateCreate a new blob or replace an existing one
DeletedeleteDelete a blob
GetgetRetrieve data for a specific blob (download)
Get ManygetAllRetrieve a list of blobs
CreatecreateCreate a container
DeletedeleteDelete a container
GetgetRetrieve data for a specific container
Get ManygetAllRetrieve a list of containers

Parameters

Blob: Create

ParameterTypeRequiredDefaultDescription
Container NamestringYesName of the container to create the blob in. Supports expressions.
Blob NamestringYesThe name of the new or existing blob. Supports expressions like {{ $json.filename }}.
FromoptionsYesbinaryWhether to upload from binary data on the input item or copy from a URL.
Options: binary, url
Binary PropertystringYesdataName 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)
URLstringYesURL to copy the blob contents from (server-side copy). Supports expressions. (shown when From is url)
OptionscollectionNo{}Blob properties, metadata and policies to set on creation.
— Access TieroptionsNoHotThe tier to set on the blob (Hot, Cool, Cold, Archive).
Options: Archive, Cold, Cool, Hot
— Blob TypeoptionsNoBlockBlobThe type of blob to create. (shown when From is binary)
Options: BlockBlob, PageBlob, AppendBlob
— Cache ControlstringNoSets the blob cache control value.
— Content CRC64stringNoCRC64 hash for integrity verification.
— Content EncodingstringNoSets the blob content encoding.
— Content LanguagestringNoSets the blob content language.
— Content MD5stringNoSets the blob MD5 hash for integrity verification.
— Content TypestringNoSets the blob content type.
— Encryption ContextstringNoBlob system metadata. Max 1024 chars. Valid for accounts with hierarchical namespace. (shown when From is binary)
— Encryption ScopestringNoEncryption scope for encrypting the request contents.
— Expiry OptionoptionsNoAbsoluteExpiration option for accounts with hierarchical namespace.
Options: Absolute (Expiry Time must be specified), NeverExpire
— Expiry TimestringNoISO 8601 datetime when the blob should expire (e.g. 2025-12-31T23:59:59Z).
— FilenamestringNoOverride the filename in Content-Disposition header.
— Immutability Policy DatestringNoRetention-until date (ISO 8601). The blob is protected from modification until this date. (shown when From is binary)
— Immutability Policy ModeoptionsNounlockedImmutability policy mode for the blob. (shown when From is binary)
Options: locked (users cannot modify the policy), unlocked (users can change the policy)
— Lease IDstringNoRequired if the blob has an active lease.
— Legal HoldbooleanNofalseWhether to set a legal hold on the blob. (shown when From is binary)
— MetadatafixedCollectionNo{ metadataValues: [] }Name-value pairs to associate with the blob as metadata.
— Field NamestringNoMetadata key.
— Field ValuestringNoMetadata value.
— OriginstringNoOrigin for CORS headers on the response.
— TagsfixedCollectionNo{ tagValues: [] }Tags to set on the blob.
— Tag NamestringNoTag key.
— Tag ValuestringNoTag value.

Blob: Delete

ParameterTypeRequiredDefaultDescription
Container NamestringYesName of the container the blob is in. Supports expressions.
Blob NamestringYesName of the blob to delete. Supports expressions.
OptionscollectionNo{}Lease handling.
— Lease IDstringNoRequired if the blob has an active lease.

Blob: Get

ParameterTypeRequiredDefaultDescription
Container NamestringYesName of the container the blob is in. Supports expressions.
Blob NamestringYesName of the blob to download. Supports expressions.
Binary PropertystringNodataName 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.
OptionscollectionNo{}Lease handling and response shaping.
— Lease IDstringNoRequired if the blob has an active lease.
— OriginstringNoOrigin for CORS headers on the response.
— SimplifybooleanNotrueWhether to return a simplified version of the response metadata.
— UPNbooleanNofalseWhether to transform Microsoft Entra object IDs to User Principal Names. Valid for hierarchical namespace accounts.

Blob: Get Many

ParameterTypeRequiredDefaultDescription
Container NamestringYesName of the container to list blobs from. Supports expressions.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of blobs to return. (shown when Return All is false)
OptionscollectionNo{}Extra fields, filters and response shaping.
— FieldsmultiOptionsNo[]Additional fields to include in the response.
Options: copy, deleted, deletedwithversions, immutabilitypolicy, legalhold, metadata, permissions, snapshots, tags, uncommittedblobs, versions
— FiltermultiOptionsNo[]Filter types for hierarchical namespace accounts.
Options: deleted, files, directories
— SimplifybooleanNotrueWhether to return a simplified version of the response.
— UPNbooleanNofalseWhether to transform Microsoft Entra object IDs to User Principal Names.

Container: Create

ParameterTypeRequiredDefaultDescription
Container NamestringYesName of the new container (3-63 chars, lowercase alphanumeric and hyphens, no consecutive hyphens). Supports expressions.
OptionscollectionNo{}Public access level and metadata for the new container.
— Access LeveloptionsNoPublic 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)
— MetadatafixedCollectionNo{ metadataValues: [] }Name-value pairs to associate with the container as metadata.
— Field NamestringNoMetadata key.
— Field ValuestringNoMetadata value.

Container: Delete

ParameterTypeRequiredDefaultDescription
Container NamestringYesName of the container to delete. Supports expressions.

Container: Get

ParameterTypeRequiredDefaultDescription
Container NamestringYesName of the container to get properties for. Supports expressions.
OptionscollectionNo{}Response shaping.
— SimplifybooleanNotrueWhether to return a simplified version of the response.

Container: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of containers to return. (shown when Return All is false)
OptionscollectionNo{}Extra fields and a name filter.
— FieldsmultiOptionsNo[]Additional fields to include in the response.
Options: metadata, deleted, system
— Filter (Prefix)stringNoFilter results to only containers with a name beginning with the specified prefix.

All Operations

ParameterTypeRequiredDefaultDescription
Max ConcurrencynumberNo10Maximum 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.

OperationOutput
blob / create, delete and container / create, deleteOne item carrying the Azure response headers parsed into JSON — the request’s etag, lastModified, encryption flags and similar.
blob / getOne 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 / getAllOne item per blob. An empty container produces one item carrying an empty blobs array.
container / getOne item carrying name, a properties object and metadata when the container has any.
container / getAllOne 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

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes 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.
  • From decides the upload path. binary reads the named binary property off the incoming item and sends the bytes; url hands 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; blob exposes blob contents to anonymous readers, container exposes 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 BusyBot

Last updated . Spotted something wrong? Tell us.