Configure Azure Blob Container Data Set Mappings

The azure-native:datashare:BlobContainerDataSetMapping resource, part of the Pulumi Azure Native provider, defines where incoming blob container datasets land in a data consumer’s Azure subscription. This guide focuses on one capability: creating dataset mappings within share subscriptions.

Dataset mappings belong to share subscriptions within Data Share accounts. They route incoming shared data to your storage accounts and containers. The examples are intentionally small. Combine them with your own Data Share accounts, share subscriptions, and destination storage infrastructure.

Map a blob container dataset to storage

Data consumers receiving shared datasets establish where Azure Data Share writes received blob container data by creating a dataset mapping.

import * as pulumi from "@pulumi/pulumi";
import * as azure_native from "@pulumi/azure-native";

const blobContainerDataSetMapping = new azure_native.datashare.BlobContainerDataSetMapping("blobContainerDataSetMapping", {
    accountName: "Account1",
    dataSetMappingName: "DatasetMapping1",
    resourceGroupName: "SampleResourceGroup",
    shareSubscriptionName: "ShareSubscription1",
});
import pulumi
import pulumi_azure_native as azure_native

blob_container_data_set_mapping = azure_native.datashare.BlobContainerDataSetMapping("blobContainerDataSetMapping",
    account_name="Account1",
    data_set_mapping_name="DatasetMapping1",
    resource_group_name="SampleResourceGroup",
    share_subscription_name="ShareSubscription1")
package main

import (
	datashare "github.com/pulumi/pulumi-azure-native-sdk/datashare/v3"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := datashare.NewBlobContainerDataSetMapping(ctx, "blobContainerDataSetMapping", &datashare.BlobContainerDataSetMappingArgs{
			AccountName:           pulumi.String("Account1"),
			DataSetMappingName:    pulumi.String("DatasetMapping1"),
			ResourceGroupName:     pulumi.String("SampleResourceGroup"),
			ShareSubscriptionName: pulumi.String("ShareSubscription1"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;

return await Deployment.RunAsync(() => 
{
    var blobContainerDataSetMapping = new AzureNative.DataShare.BlobContainerDataSetMapping("blobContainerDataSetMapping", new()
    {
        AccountName = "Account1",
        DataSetMappingName = "DatasetMapping1",
        ResourceGroupName = "SampleResourceGroup",
        ShareSubscriptionName = "ShareSubscription1",
    });

});
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.datashare.BlobContainerDataSetMapping;
import com.pulumi.azurenative.datashare.BlobContainerDataSetMappingArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var blobContainerDataSetMapping = new BlobContainerDataSetMapping("blobContainerDataSetMapping", BlobContainerDataSetMappingArgs.builder()
            .accountName("Account1")
            .dataSetMappingName("DatasetMapping1")
            .resourceGroupName("SampleResourceGroup")
            .shareSubscriptionName("ShareSubscription1")
            .build());

    }
}
resources:
  blobContainerDataSetMapping:
    type: azure-native:datashare:BlobContainerDataSetMapping
    properties:
      accountName: Account1
      dataSetMappingName: DatasetMapping1
      resourceGroupName: SampleResourceGroup
      shareSubscriptionName: ShareSubscription1

The accountName and shareSubscriptionName identify the consumer-side Data Share account and subscription receiving the data. The dataSetMappingName provides a unique identifier for this routing rule. When the provider synchronizes shared data, it uses this mapping to determine the destination storage account and container (configured via additional properties not shown in this minimal example).

Beyond these examples

This snippet focuses on dataset mapping creation and naming. It’s intentionally minimal rather than a complete data sharing configuration.

The example references pre-existing infrastructure such as Azure Data Share accounts, share subscriptions, and storage accounts and containers for destination infrastructure. It focuses on creating the mapping resource rather than provisioning the surrounding data sharing infrastructure.

To keep things focused, common dataset mapping patterns are omitted, including:

  • Destination storage configuration (containerName, storageAccountName, subscriptionId)
  • Source dataset identification (dataSetId)
  • Resource group and subscription targeting (resourceGroup)
  • Mapping kind specification (kind property for container type)

These omissions are intentional: the goal is to illustrate how the dataset mapping resource is wired, not provide drop-in data sharing modules. See the BlobContainerDataSetMapping resource reference for all available configuration options.

Let's configure Azure Blob Container Data Set Mappings

Get started with Pulumi Cloud, then follow our quick setup guide to deploy this infrastructure.

Try Pulumi Cloud for FREE

Frequently Asked Questions

Configuration & Setup
What's required to create a blob container data set mapping?
You need six required properties: containerName, dataSetId, kind (must be ‘Container’), resourceGroup, storageAccountName, and subscriptionId.
How do I specify which storage account to use?
Provide three properties together: storageAccountName for the account name, subscriptionId for the subscription, and resourceGroup for the resource group.
Why must I set kind to 'Container'?
This resource type specifically maps blob containers, so kind must be set to the expected value ‘Container’.
Immutability & Lifecycle
What properties can't I change after creating the mapping?
Four properties are immutable: accountName, dataSetMappingName, resourceGroupName, and shareSubscriptionName. Changing any of these requires replacing the resource.
How do I check the status of my data set mapping?
Use the computed output properties dataSetMappingStatus for mapping status and provisioningState for provisioning state.
Can I import an existing data set mapping?
Yes, use the import command with the full resource path including subscription ID, resource group, account name, share subscription name, and data set mapping name.

Using a different cloud?

Explore integration guides for other cloud providers: