# azure_blob_storage

> For the complete documentation index, see [llms.txt](https://docs.redpanda.com/llms.txt). Component-specific: [cloud-data-platform-full.txt](https://docs.redpanda.com/cloud-data-platform-full.txt)

---
title: azure_blob_storage
latest-operator-version: v26.2.4
latest-console-tag: v3.12.0
latest-connect-version: 4.114.0
latest-redpanda-tag: v26.2.5
docname: connect/components/outputs/azure_blob_storage
page-component-name: cloud-data-platform
page-version: master
page-component-version: master
page-component-title: Cloud
page-relative-src-path: connect/components/outputs/azure_blob_storage.adoc
page-edit-url: https://github.com/redpanda-data/cloud-docs/edit/main/modules/develop/pages/connect/components/outputs/azure_blob_storage.adoc
description: Sends message parts as objects to an Azure Blob Storage Account container. Each object is uploaded with the filename specified with the container field.
page-git-created-date: "2024-09-09"
page-git-modified-date: "2026-05-26"
---

<!-- Source: https://docs.redpanda.com/cloud-data-platform/develop/connect/components/outputs/azure_blob_storage.md -->

Sends message parts as objects to an Azure Blob Storage Account container. Each object is uploaded with the filename specified with the `container` field.

In order to have a different path for each object you should use function interpolations described [here](https://docs.redpanda.com/cloud-data-platform/develop/connect/configuration/interpolation/#bloblang-queries), which are calculated per message of a batch.

Supports multiple authentication methods but only one of the following is required:

-   `storage_connection_string`

-   `storage_account` and `storage_access_key`

-   `storage_account` and `storage_sas_token`

-   `storage_account` to access via [DefaultAzureCredential](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#DefaultAzureCredential)


If multiple are set then the `storage_connection_string` is given priority.

If the `storage_connection_string` does not contain the `AccountName` parameter, please specify it in the `storage_account` field.

## [](#performance)Performance

This output benefits from sending multiple messages in flight in parallel for improved performance. You can tune the max number of in flight messages (or message batches) with the field `max_in_flight`.

### Common

```yml
output:
  label: ""
  azure_blob_storage:
    storage_account: ""
    storage_access_key: ""
    storage_connection_string: ""
    storage_sas_token: ""
    container: "" # No default (required)
    path: ${!counter()}-${!timestamp_unix_nano()}.txt
    max_in_flight: 64
```

### Advanced

```yml
output:
  label: ""
  azure_blob_storage:
    storage_account: ""
    storage_access_key: ""
    storage_connection_string: ""
    storage_sas_token: ""
    container: "" # No default (required)
    path: ${!counter()}-${!timestamp_unix_nano()}.txt
    blob_type: BLOCK
    public_access_level: PRIVATE
    max_in_flight: 64
```

## [](#fields)Fields

### [](#blob_type)`blob_type`

Block and Append blobs are made up of blocks, and each blob can support up to 50,000 blocks. The default value is `BLOCK`.

This field supports [interpolation functions](https://docs.redpanda.com/cloud-data-platform/develop/connect/configuration/interpolation/#bloblang-queries).

**Type**: `string`

**Default**: `BLOCK`

**Options**: `BLOCK`, `APPEND`

### [](#container)`container`

The container for uploading the messages to.

This field supports [interpolation functions](https://docs.redpanda.com/cloud-data-platform/develop/connect/configuration/interpolation/#bloblang-queries).

**Type**: `string`

```yaml
# Examples:
container: messages-${!timestamp("2006")}
```

### [](#max_in_flight)`max_in_flight`

The maximum number of messages to have in flight at a given time. For outputs that send messages in batches, this limit applies to message batches. Increase this value to improve throughput.

**Type**: `int`

**Default**: `64`

### [](#path)`path`

The path of each message to upload.

This field supports [interpolation functions](https://docs.redpanda.com/cloud-data-platform/develop/connect/configuration/interpolation/#bloblang-queries).

**Type**: `string`

**Default**: `${!counter()}-${!timestamp_unix_nano()}.txt`

```yaml
# Examples:
path: ${!counter()}-${!timestamp_unix_nano()}.json

# ---

path: ${!meta("kafka_key")}.json

# ---

path: ${!json("doc.namespace")}/${!json("doc.id")}.json
```

### [](#public_access_level)`public_access_level`

The container’s public access level. The default value is `PRIVATE`.

This field supports [interpolation functions](https://docs.redpanda.com/cloud-data-platform/develop/connect/configuration/interpolation/#bloblang-queries).

**Type**: `string`

**Default**: `PRIVATE`

**Options**: `PRIVATE`, `BLOB`, `CONTAINER`

### [](#storage_access_key)`storage_access_key`

The access key for the storage account. Use this field along with `storage_account` for authentication. This field is ignored when the `storage_connection_string` field is populated.

**Type**: `string`

**Default**: `""`

### [](#storage_account)`storage_account`

The storage account to access. This field is ignored when the `storage_connection_string` field is populated, unless the connection string does not contain the `AccountName` parameter.

**Type**: `string`

**Default**: `""`

### [](#storage_connection_string)`storage_connection_string`

The connection string for the storage account. This field is required if `storage_account` is not set.

> 📝 **NOTE**
>
> If the `storage_connection_string` field does not contain the `AccountName` parameter value, specify it in the `storage_account` field.

**Type**: `string`

**Default**: `""`

### [](#storage_sas_token)`storage_sas_token`

The SAS token for the storage account. Use this field along with `storage_account` for authentication. This field is ignored when either the `storage_connection_string` or `storage_access_key` fields are populated.

**Type**: `string`

**Default**: `""`