Storage
Azure integration · 23 node(s).
00Overview
Work with Azure Blob Storage straight from a flow — create and list containers, upload and download files, and copy blobs of any size while organising everything with metadata and searchable index tags. Move blobs between the Hot, Cool, Cold and Archive tiers, snapshot them, soft-delete and restore them, and take write leases to guard against concurrent changes. Hand out time-limited shared access links so people can download or upload without ever seeing your account key, and search the whole account for blobs by the tags you set.
Every field below is exactly what you see in the Flomation editor. Fields marked ● live picker let you choose from a list pulled live from your account — no IDs to look up.
01Connecting Storage
- In the Azure Portal, open your storage account and copy its name into the node's Storage Account field — the lowercase 3–24 character account name, not the full blob endpoint URL.
- Pick an Authentication method: Shared Key uses the account's access key (full control of the account, quickest to set up), while Microsoft Entra (service principal) uses a registered app whose access you scope with a role assignment (recommended for least privilege).
- For Shared Key, go to Storage account → Security + networking → Access keys, choose Show and copy either Key value into Account Key.
- For Microsoft Entra, register an app under Microsoft Entra ID → App registrations: copy its Directory (tenant) ID into Tenant ID and its Application (client) ID into Client ID, add a secret under Certificates & secrets for Client Secret, then on the storage account's Access control (IAM) blade assign the app a blob data role such as Storage Blob Data Contributor.
- Store the account key or client secret as a Flomation environment secret (e.g.
storage_secret) and select it in the node's Account Key or Client Secret field.
| Field | Type | Details | |
|---|---|---|---|
| Authentication | string | Shared Key, Microsoft Entra (service principal) | |
| Account Key | secret | Base64 account key — Storage Account ▸ Access keys | |
| Client Secret | secret | The app needs a Storage Blob Data role on the account (RBAC) | |
| Allow Insecure TLS | boolean | Skip TLS verification — only for custom endpoints with a self-signed certificate | |
| Storage Account | string | Required | mystorageaccount |
| Tenant ID | string | Directory (tenant) ID — a GUID or your-tenant.onmicrosoft.com | |
| Client ID | string | Application (client) ID of the service principal | |
| Custom Endpoint | string | https://myaccount.blob.core.windows.net — leave blank to derive; Azurite: http://host:10000/devstoreaccount1 |
${secrets.your_secret}.02Blob
Azure Storage: Copy Blob
azure/storage/blob_copy · Action
Start a server-side (async) blob copy — from another blob in the same account, or from any URL Azure can reach — and optionally wait for it to complete. Handles blobs of any size, unlike Upload from URL's 256 MB synchronous cap
| Field | Type | Details | |
|---|---|---|---|
| Destination Container | string | Required | my-container |
| Destination Blob Name | string | Required | backups/summary.pdf |
| Source Container (same account) | string | Copy from this account: source container name | |
| Source Blob (same account) | string | Copy from this account: source blob name | |
| Source URL | string | Or a full URL (public, or carrying its own SAS) — leave the two fields above blank | |
| Wait for Completion | boolean | On by default: poll up to 30s until the copy succeeds or fails |
Returns: id, result, copy_status, copy_id, tool_result, success, error
Azure Storage: Delete Blob
azure/storage/blob_delete · Action
Delete a blob. Its snapshots are deleted with it by default (Azure refuses the delete otherwise); choose Snapshots Only to keep the blob and drop the snapshots
| Field | Type | Details | |
|---|---|---|---|
| Container | string | Required | my-container |
| Blob Name | string | Required | reports/2026/summary.pdf |
| Snapshots | string | choices: Delete blob and snapshots (default), Delete blob and snapshots, Delete snapshots only | |
| Lease ID | string | Only needed when the blob or container is leased — the Lease ID output of a Lease step |
Returns: id, result, tool_result, success, error
Azure Storage: Download Blob
azure/storage/blob_download · Action
Download a blob (optionally a byte range) to a file reference for downstream nodes. Text-like content up to 1 MB is also returned inline
| Field | Type | Details | |
|---|---|---|---|
| Container | string | Required | my-container |
| Blob Name | string | Required | reports/2026/summary.pdf |
| Byte Range | string | bytes=0-1023 — leave blank for the whole blob | |
| Lease ID | string | Only needed when the blob or container is leased — the Lease ID output of a Lease step |
Returns: id, result, file, content, content_type, size, tool_result, success, error
Azure Storage: Find Blobs by Tags
azure/storage/blob_find_by_tags · Action
Search the whole storage account for blobs whose index tags match an expression, e.g. "project"='alpha' AND "status"='final'
| Field | Type | Details | |
|---|---|---|---|
| Where | string | Required | "project"='alpha' — tag names in double quotes, values in single quotes |
| Return All | boolean | Follow pagination until every match is fetched | |
| Limit | integer | Max matches to return when not returning all (default 50, max 5000) |
Returns: results, count, tool_result, success, error
Azure Storage: Generate SAS Link
azure/storage/blob_generate_sas · Action
Create a time-limited shared access signature URL for a blob or container — hand out downloads or accept uploads without sharing the account key. Signed locally with the account key; no API call is made
| Field | Type | Details | |
|---|---|---|---|
| Resource | string | choices: Blob, Container | |
| Container | string | Required | my-container |
| Blob Name | string | reports/2026/summary.pdf | |
| Permissions | string | r (read) is the default — subset of "racwdxltmei", in that order | |
| Expires After (hours) | integer | 24 unless set — ignored when an explicit expiry is given | |
| Expiry | datetime | Explicit expiry timestamp — wins over Expires After | |
| Start | datetime | Optional not-before timestamp (defaults to immediately valid) | |
| Allowed IP Range | string | 168.1.5.65 or 168.1.5.60-168.1.5.70 | |
| Content Disposition | string | attachment; filename="report.pdf" — forced on downloads via this link |
Returns: id, result, sas_url, sas_token, expires_at, tool_result, success, error
Azure Storage: List Blobs
azure/storage/blob_get_all · Action
List the blobs in a container, optionally filtered by a name prefix and enriched with metadata, snapshots, versions, soft-deleted blobs, or tags
| Field | Type | Details | |
|---|---|---|---|
| Container | string | Required | my-container |
| Prefix | string | Only blobs whose name starts with this, e.g. reports/2026/ | |
| Include | combobox | Leave blank for nothing extra; combine with commas, e.g. metadata,tags — choices: Metadata, Index tags, Metadata + index tags, Snapshots, Versions, Soft-deleted blobs, Soft-deleted blobs with versions, Uncommitted blocks (failed/abandoned uploads), Copy state, Permissions (hierarchical namespace), Immutability policy, Legal hold | |
| Return All | boolean | Follow pagination until every blob is fetched | |
| Limit | integer | Max blobs to return when not returning all (default 50, max 5000) |
Returns: results, count, tool_result, success, error
Azure Storage: Get Blob Properties
azure/storage/blob_get_properties · Action
Fetch a blob's properties and metadata (size, tier, lease, copy status) via HEAD — without downloading its content
| Field | Type | Details | |
|---|---|---|---|
| Container | string | Required | my-container |
| Blob Name | string | Required | reports/2026/summary.pdf |
| Lease ID | string | Only needed when the blob or container is leased — the Lease ID output of a Lease step |
Returns: id, result, tool_result, success, error
Azure Storage: Get Blob Tags
azure/storage/blob_get_tags · Action
Read a blob's index tags as a plain object
| Field | Type | Details | |
|---|---|---|---|
| Container | string | Required | my-container |
| Blob Name | string | Required | reports/2026/summary.pdf |
| Lease ID | string | Only needed when the blob or container is leased — the Lease ID output of a Lease step |
Returns: id, result, tool_result, success, error
Azure Storage: Lease Blob
azure/storage/blob_lease · Action
Take, extend, or release a write lock on a blob. Acquire returns a Lease ID — pass it to the Lease ID field of any Upload/Delete/Set step to write to the locked blob; every write WITHOUT it is refused while the lease is held. Break ends a lease you do not hold
| Field | Type | Details | |
|---|---|---|---|
| Container | string | Required | my-container |
| Blob Name | string | Required | reports/2026/summary.pdf |
| Lease Action | string | Required | choices: Acquire — take the lock, Renew — extend the lock you hold, Change — swap the lock's ID, Release — hand the lock back, Break — end someone else's lock |
| Lease ID | string | The Lease ID output of the Acquire step — optional on Break, which does not need it | |
| Proposed Lease ID | string | A GUID to use as the lease's ID — leave blank on Acquire to let Azure choose one | |
| Duration (seconds) | integer | 15-60 seconds, or -1 to hold the lease until it is released | |
| Break Period (seconds) | integer | 0-60 — how long the lease may still run. 0 ends it immediately. Blank lets it run out its remaining time |
Returns: id, result, lease_id, lease_time, tool_result, success, error
Azure Storage: Set Blob Metadata
azure/storage/blob_set_metadata · Action
Replace a blob's metadata without re-uploading its content. The metadata object supplied here becomes the blob's ENTIRE metadata set — keys not included are removed
| Field | Type | Details | |
|---|---|---|---|
| Container | string | Required | my-container |
| Blob Name | string | Required | reports/2026/summary.pdf |
| Metadata (JSON) | object | Required | {"reviewed":"true"} — replaces ALL existing metadata |
| Lease ID | string | Only needed when the blob or container is leased — the Lease ID output of a Lease step |
Returns: id, result, tool_result, success, error
Azure Storage: Set Blob Properties
azure/storage/blob_set_properties · Action
Change a blob's HTTP properties (content type, cache control, disposition, encoding, language) without re-uploading. CAUTION: Azure treats this as a replace — any of the five properties left blank here is CLEARED on the blob
| Field | Type | Details | |
|---|---|---|---|
| Container | string | Required | my-container |
| Blob Name | string | Required | reports/2026/summary.pdf |
| Content Type | string | application/pdf | |
| Cache Control | string | max-age=3600 | |
| Content Disposition | string | attachment; filename="summary.pdf" | |
| Content Encoding | string | gzip | |
| Content Language | string | en-GB | |
| Lease ID | string | Only needed when the blob or container is leased — the Lease ID output of a Lease step |
Returns: id, result, tool_result, success, error
Azure Storage: Set Blob Tags
azure/storage/blob_set_tags · Action
Replace a blob's index tags (up to 10 searchable key/value pairs). The tags supplied here become the blob's ENTIRE tag set
| Field | Type | Details | |
|---|---|---|---|
| Container | string | Required | my-container |
| Blob Name | string | Required | reports/2026/summary.pdf |
| Tags (JSON) | object | Required | {"project":"alpha","status":"final"} — replaces ALL existing tags |
| Lease ID | string | Only needed when the blob or container is leased — the Lease ID output of a Lease step |
Returns: id, result, tool_result, success, error
Azure Storage: Set Blob Tier
azure/storage/blob_set_tier · Action
Change a block blob's access tier (Hot/Cool/Cold/Archive). Moving OUT of Archive starts a rehydration that can take hours — High priority speeds it up
| Field | Type | Details | |
|---|---|---|---|
| Container | string | Required | my-container |
| Blob Name | string | Required | reports/2026/summary.pdf |
| Access Tier | string | Required | choices: Hot, Cool, Cold, Archive |
| Rehydrate Priority | string | choices: Default, Standard, High | |
| Lease ID | string | Only needed when the blob or container is leased — the Lease ID output of a Lease step |
Returns: id, result, tool_result, success, error
Azure Storage: Snapshot Blob
azure/storage/blob_snapshot · Action
Create a read-only point-in-time snapshot of a blob. The returned snapshot ID (a timestamp) addresses it later via ?snapshot=
| Field | Type | Details | |
|---|---|---|---|
| Container | string | Required | my-container |
| Blob Name | string | Required | reports/2026/summary.pdf |
Returns: id, result, snapshot, tool_result, success, error
Azure Storage: Undelete Blob
azure/storage/blob_undelete · Action
Restore a soft-deleted blob and its snapshots. The account must have blob soft delete enabled and the retention window must not have lapsed
| Field | Type | Details | |
|---|---|---|---|
| Container | string | Required | my-container |
| Blob Name | string | Required | reports/2026/summary.pdf |
Returns: id, result, tool_result, success, error
Azure Storage: Upload Blob
azure/storage/blob_upload · Action
Upload content to a block blob — inline text, base64, a flo:file reference, or an uploaded asset. Replaces the blob unless Overwrite is turned off. Uploads as a single Put Blob, so content is capped at the platform's 256 MB download/upload ceiling
| Field | Type | Details | |
|---|---|---|---|
| Container | string | Required | my-container |
| Blob Name | string | Required | reports/2026/summary.pdf |
| Content | text | Required | Text, base64, a flo:file reference, or ${parent.file} from an upstream node |
| Content Type | string | Detected from the content when blank (e.g. application/pdf) | |
| Access Tier | string | choices: Account default, Hot, Cool, Cold, Archive | |
| Metadata (JSON) | object | {"source":"flomation"} | |
| Index Tags (JSON) | object | {"project":"alpha"} — up to 10 searchable tags | |
| Overwrite | boolean | On by default. Turn off to fail instead of replacing an existing blob | |
| Lease ID | string | Only needed when the blob or container is leased — the Lease ID output of a Lease step |
Returns: id, result, etag, url, tool_result, success, error
Azure Storage: Upload Blob from URL
azure/storage/blob_upload_from_url · Action
Create a block blob by having Azure fetch a publicly reachable URL server-side (synchronous, up to 256 MB). For larger or cross-account copies use Copy Blob
| Field | Type | Details | |
|---|---|---|---|
| Container | string | Required | my-container |
| Blob Name | string | Required | downloads/report.pdf |
| Source URL | string | Required | https://example.com/file.pdf — must be reachable by Azure, or carry its own SAS |
Returns: id, result, tool_result, success, error
03Container
Azure Storage: Create Container
azure/storage/container_create · Action
Create a blob container in the storage account, optionally with a public access level and metadata
| Field | Type | Details | |
|---|---|---|---|
| Container Name | string | Required | my-container — 3-63 lowercase letters, digits and hyphens |
| Public Access | string | choices: Private (default), Blob (anonymous read for blobs), Container (anonymous read and list) | |
| Metadata (JSON) | object | {"project":"alpha"} |
Returns: id, result, tool_result, success, error
Azure Storage: Delete Container
azure/storage/container_delete · Action
Delete a container and every blob in it. The container is soft-deleted when the account has delete retention enabled, otherwise this is permanent
| Field | Type | Details | |
|---|---|---|---|
| Container Name | string | Required | my-container |
| Lease ID | string | Only needed when the blob or container is leased — the Lease ID output of a Lease step |
Returns: id, result, tool_result, success, error
Azure Storage: Get Container
azure/storage/container_get · Action
Fetch a container's properties and metadata (lease state, public access level, immutability flags)
| Field | Type | Details | |
|---|---|---|---|
| Container Name | string | Required | my-container |
| Lease ID | string | Only needed when the blob or container is leased — the Lease ID output of a Lease step |
Returns: id, result, tool_result, success, error
Azure Storage: List Containers
azure/storage/container_get_all · Action
List the containers in the storage account, optionally filtered by a name prefix and enriched with metadata, soft-deleted containers, or system containers
| Field | Type | Details | |
|---|---|---|---|
| Prefix | string | Only containers whose name starts with this | |
| Include | combobox | Leave blank for nothing extra; combine with commas, e.g. metadata,deleted — choices: Metadata, Soft-deleted containers, Metadata + soft-deleted containers, System containers ($logs, $blobchangefeed) | |
| Return All | boolean | Follow pagination until every container is fetched | |
| Limit | integer | Max containers to return when not returning all (default 50, max 5000) |
Returns: results, count, tool_result, success, error
Azure Storage: Lease Container
azure/storage/container_lease · Action
Take, extend, or release a lock on a container. A container lease guards the container itself — deleting it, or changing its metadata — not the blobs inside it. Acquire returns a Lease ID to pass to the Lease ID field of a Delete Container or Set Container Metadata step
| Field | Type | Details | |
|---|---|---|---|
| Container Name | string | Required | my-container |
| Lease Action | string | Required | choices: Acquire — take the lock, Renew — extend the lock you hold, Change — swap the lock's ID, Release — hand the lock back, Break — end someone else's lock |
| Lease ID | string | The Lease ID output of the Acquire step — optional on Break, which does not need it | |
| Proposed Lease ID | string | A GUID to use as the lease's ID — leave blank on Acquire to let Azure choose one | |
| Duration (seconds) | integer | 15-60 seconds, or -1 to hold the lease until it is released | |
| Break Period (seconds) | integer | 0-60 — how long the lease may still run. 0 ends it immediately. Blank lets it run out its remaining time |
Returns: id, result, lease_id, lease_time, tool_result, success, error
Azure Storage: Set Container Metadata
azure/storage/container_set_metadata · Action
Replace a container's metadata. The metadata object supplied here becomes the container's ENTIRE metadata set — keys not included are removed
| Field | Type | Details | |
|---|---|---|---|
| Container Name | string | Required | my-container |
| Metadata (JSON) | object | Required | {"project":"alpha"} — replaces ALL existing metadata |
| Lease ID | string | Only needed when the blob or container is leased — the Lease ID output of a Lease step |
Returns: id, result, tool_result, success, error
04Notes & Limitations
Behaviours and constraints worth knowing before you build with these nodes.
- Uploading a blob sends the content in a single request, so it is capped at 256 MB; to move larger blobs use the Copy Blob action, which performs a server-side copy of any size.
- Downloading a blob is capped at 256 MB and is delivered as a file reference for downstream nodes, with text-like content up to 1 MB also returned inline.
- Generating a shared access link requires Shared Key authentication, because the link is signed locally with the account key; a Microsoft Entra service principal has no key to sign with and the action will refuse it.
- Acquiring a lease returns a Lease ID that you must pass into the Lease ID field of any upload, delete, or set step to write to the locked blob, since every write without it is refused while the lease is held.
- Restoring a soft-deleted blob only works if the account has blob soft delete enabled and its retention window has not yet lapsed.