Azure Storage Action Block
What it does: Manage blobs and containers in Azure Blob Storage directly from your workflow automation.
In simple terms: Automate cloud storage operations -- upload, download, list, and delete files (blobs) and organize them in containers within Azure Storage.
When to Use This
Use the Azure Storage action when you need to:
- ✅ Upload files generated by your workflow to Azure Blob Storage
- ✅ Download blobs for processing in subsequent workflow steps
- ✅ Organize blobs into containers based on workflow logic
- ✅ List and manage blobs in containers programmatically
- ✅ Clean up temporary storage by deleting blobs or containers
Example: When a document is processed by your workflow, upload the output PDF to an Azure Storage container organized by date and customer.
Features
- Shared Key Authentication: Connect using your storage account name and access key
- Blob Operations: Create, retrieve, list, and delete blobs
- Container Management: Create, retrieve, list, and delete containers
- Variable Support: Use workflow variables for dynamic blob names and paths
- Multiple Blob Types: Support for block blobs, append blobs, and page blobs
Setup
1. Get Your Azure Storage Credentials
- Go to the Azure Portal and navigate to your Storage Account
- Open Security + networking > Access keys
- Copy the Storage account name and Key (key1 or key2)
2. Connect in Indite
- Open the Azure Storage block settings
- Enter your Account Name (e.g.,
mystorageaccount) - Enter your Access Key
The storage access key provides full access to all data in your storage account. Handle it with the same care as a password. Consider creating a dedicated storage account for workflow operations to limit the blast radius.
3. Configure the Action
- Select the desired Action from the dropdown
- Specify the Container Name for blob operations
- Fill in action-specific fields (blob name, content, etc.)
Supported Actions
Blob Operations
| Action | Description |
|---|---|
| Create Blob | Upload a new blob (file) to a container |
| Get Blob | Download a blob's content by name |
| Get All Blobs | List all blobs in a container with optional prefix filter |
| Delete Blob | Remove a blob from a container |
Container Operations
| Action | Description |
|---|---|
| Create Container | Create a new blob container |
| Get Container | Retrieve container metadata and properties |
| Get All Containers | List all containers in the storage account |
| Delete Container | Remove a container and all its blobs |
Using Variables
You can use workflow variables in any Azure Storage field:
Blob Name (with folder-like path):
reports/{{date.year}}/{{date.month}}/{{customer.id}}-invoice.pdfContainer Name:
{{environment}}-documentsBlob Content:
{{report.generatedContent}}Prefix Filter (Get All Blobs):
reports/{{date.year}}/{{date.month}}/Response Mapping
Map results from Azure Storage actions to workflow variables:
Available Values (Blob Operations):
- Blob Name: Full name/path of the blob
- Blob URL: Public or SAS URL for the blob
- Content: The blob's content (for Get Blob)
- Content Type: MIME type of the blob
- Content Length: Size in bytes
- Last Modified: Timestamp of last modification
- ETag: Version identifier for concurrency control
Available Values (Container Operations):
- Container Name: Name of the container
- Last Modified: When the container was last modified
- Public Access Level: Current access level (private, blob, container)
Available Values (Get All Blobs/Containers):
- Items: Array of blob or container objects
- Count: Number of items returned
Example Mapping:
Blob URL → {{storage.blobUrl}}
Content → {{storage.content}}
Blob List → {{storage.blobs}}Common Use Cases
1. Document Archival
Trigger: Document processing complete Azure Storage Action: Create Blob
Container: processed-documents
Blob Name: {{date.year}}/{{date.month}}/{{document.id}}.pdf
Content: {{document.processedContent}}
Content Type: application/pdf2. Backup Workflow Data
Trigger: Schedule (Daily at midnight) Azure Storage Action: Create Blob
Container: backups
Blob Name: daily/{{date.iso}}/workflow-data.json
Content: {{aggregated.workflowData}}
Content Type: application/json3. File Processing Pipeline
Trigger: New file notification Azure Storage Action: Get Blob
Container: incoming
Blob Name: {{notification.blobName}}Process the content, then upload the result:
Container: processed
Blob Name: {{notification.blobName}}-processed
Content: {{processing.result}}4. Storage Cleanup
Trigger: Schedule (Weekly) Azure Storage Action: Get All Blobs, then Delete Blob
Container: temp-files
Prefix: uploads/Loop through blobs older than 30 days and delete them.
Best Practices
Naming Conventions
- ✅ Use forward slashes in blob names to create virtual folder hierarchies (e.g.,
year/month/file.pdf) - ✅ Keep container names lowercase, alphanumeric, and between 3-63 characters
- ✅ Use descriptive, deterministic blob names to avoid overwrites
- ✅ Include timestamps or unique IDs in blob names for versioning
Performance
- ✅ Use prefix filters in Get All Blobs to narrow results
- ✅ Avoid listing entire containers with thousands of blobs
- ✅ Upload blobs to the Azure region closest to your workflow engine
- ✅ Use appropriate content types for proper browser/client handling
Cost Management
- ✅ Delete temporary blobs after processing to reduce storage costs
- ✅ Use the Hot tier for frequently accessed data and Cool/Archive for infrequent access
- ✅ Monitor storage usage through Azure Cost Management
- ✅ Set up lifecycle management policies in Azure Portal for automatic tiering
Security
- ✅ Rotate access keys periodically through Azure Portal
- ✅ Never log or expose the access key in workflow outputs
- ✅ Set containers to private access level unless public access is explicitly needed
- ✅ Use separate containers for different security classification levels
Troubleshooting
Authentication Failed
Check:
- The account name is correct (case-sensitive, no
.blob.core.windows.netsuffix) - The access key is the full key string from Azure Portal
- The key has not been regenerated since configuration
Blob Upload Fails
Solutions:
- Verify the container exists (create it first if needed)
- Check that the blob name is valid (no leading slashes, valid characters)
- Ensure the content is not empty
- Verify the storage account has sufficient capacity
Container Not Found
Check:
- Container names must be lowercase (Azure enforces this)
- The container has not been deleted (deletion can take up to 30 seconds to propagate)
- Use Get All Containers to verify the container exists
Get Blob Returns Empty
Check:
- The blob name matches exactly (case-sensitive)
- Include the full path including any virtual folder prefixes
- The blob has not been deleted by another process
Limitations
- Blob Size: This block is optimized for blobs up to 256 MB; larger files may require chunked uploads not supported by this block
- Access Tiers: Tier management (Hot, Cool, Archive) cannot be set through this block
- SAS Tokens: Generating Shared Access Signature URLs is not supported -- use access keys only
- Blob Snapshots: Creating or managing blob snapshots is not available
- Static Website: Static website hosting configuration cannot be managed through this block
- API Rate Limits: Azure Storage has per-account request rate limits
Tip: Use virtual folder paths in blob names (e.g., data/2024/01/file.csv) to organize your storage logically -- then use prefix filters in Get All Blobs to list only blobs in a specific "folder."
Related Blocks
- Azure Cosmos DB: Store structured data alongside blob storage
- OneDrive: Alternative file storage for Microsoft 365 users
- Condition: Add logic before storage operations
- Loop: Iterate over blob lists for batch processing
- Set Variable: Prepare blob names and content dynamically