The azure-native:datashare:KustoDatabaseDataSet resource, part of the Pulumi Azure Native provider, registers an Azure Data Explorer (Kusto) database as a dataset within an Azure Data Share, making it available for sharing with data consumers. This guide focuses on one capability: Kusto database dataset registration.
Dataset registration sits within a three-level hierarchy: a Data Share account contains shares, and shares contain datasets. The example assumes you have an existing Data Share account, share, and Kusto database. Combine this with invitation and subscription resources to complete the sharing workflow.
Add a Kusto database to a data share
Data providers sharing Azure Data Explorer databases register them as datasets within a Data Share account, making the database available for consumers.
import * as pulumi from "@pulumi/pulumi";
import * as azure_native from "@pulumi/azure-native";
const kustoDatabaseDataSet = new azure_native.datashare.KustoDatabaseDataSet("kustoDatabaseDataSet", {
accountName: "Account1",
dataSetName: "Dataset1",
kind: "KustoDatabase",
kustoDatabaseResourceId: "/subscriptions/433a8dfd-e5d5-4e77-ad86-90acdc75eb1a/resourceGroups/SampleResourceGroup/providers/Microsoft.Kusto/clusters/Cluster1/databases/Database1",
resourceGroupName: "SampleResourceGroup",
shareName: "Share1",
});
import pulumi
import pulumi_azure_native as azure_native
kusto_database_data_set = azure_native.datashare.KustoDatabaseDataSet("kustoDatabaseDataSet",
account_name="Account1",
data_set_name="Dataset1",
kind="KustoDatabase",
kusto_database_resource_id="/subscriptions/433a8dfd-e5d5-4e77-ad86-90acdc75eb1a/resourceGroups/SampleResourceGroup/providers/Microsoft.Kusto/clusters/Cluster1/databases/Database1",
resource_group_name="SampleResourceGroup",
share_name="Share1")
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.NewKustoDatabaseDataSet(ctx, "kustoDatabaseDataSet", &datashare.KustoDatabaseDataSetArgs{
AccountName: pulumi.String("Account1"),
DataSetName: pulumi.String("Dataset1"),
Kind: pulumi.String("KustoDatabase"),
KustoDatabaseResourceId: pulumi.String("/subscriptions/433a8dfd-e5d5-4e77-ad86-90acdc75eb1a/resourceGroups/SampleResourceGroup/providers/Microsoft.Kusto/clusters/Cluster1/databases/Database1"),
ResourceGroupName: pulumi.String("SampleResourceGroup"),
ShareName: pulumi.String("Share1"),
})
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 kustoDatabaseDataSet = new AzureNative.DataShare.KustoDatabaseDataSet("kustoDatabaseDataSet", new()
{
AccountName = "Account1",
DataSetName = "Dataset1",
Kind = "KustoDatabase",
KustoDatabaseResourceId = "/subscriptions/433a8dfd-e5d5-4e77-ad86-90acdc75eb1a/resourceGroups/SampleResourceGroup/providers/Microsoft.Kusto/clusters/Cluster1/databases/Database1",
ResourceGroupName = "SampleResourceGroup",
ShareName = "Share1",
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.datashare.KustoDatabaseDataSet;
import com.pulumi.azurenative.datashare.KustoDatabaseDataSetArgs;
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 kustoDatabaseDataSet = new KustoDatabaseDataSet("kustoDatabaseDataSet", KustoDatabaseDataSetArgs.builder()
.accountName("Account1")
.dataSetName("Dataset1")
.kind("KustoDatabase")
.kustoDatabaseResourceId("/subscriptions/433a8dfd-e5d5-4e77-ad86-90acdc75eb1a/resourceGroups/SampleResourceGroup/providers/Microsoft.Kusto/clusters/Cluster1/databases/Database1")
.resourceGroupName("SampleResourceGroup")
.shareName("Share1")
.build());
}
}
resources:
kustoDatabaseDataSet:
type: azure-native:datashare:KustoDatabaseDataSet
properties:
accountName: Account1
dataSetName: Dataset1
kind: KustoDatabase
kustoDatabaseResourceId: /subscriptions/433a8dfd-e5d5-4e77-ad86-90acdc75eb1a/resourceGroups/SampleResourceGroup/providers/Microsoft.Kusto/clusters/Cluster1/databases/Database1
resourceGroupName: SampleResourceGroup
shareName: Share1
The kustoDatabaseResourceId property points to your existing Kusto database using its full Azure resource ID. The kind property must be set to “KustoDatabase” to indicate this dataset type. The accountName, shareName, and dataSetName properties position this dataset within the Data Share hierarchy: the dataset named “Dataset1” lives in share “Share1” within account “Account1”.
Beyond these examples
This snippet focuses on Kusto database dataset registration. It’s intentionally minimal rather than a full data sharing solution.
The example references pre-existing infrastructure such as Data Share accounts and shares, Azure Data Explorer databases, and resource groups and subscriptions. It focuses on dataset registration rather than provisioning the surrounding infrastructure.
To keep things focused, common dataset patterns are omitted, including:
- Dataset synchronization settings
- Consumer-side dataset mapping
- Share invitations and subscriptions
- Access permissions and role assignments
These omissions are intentional: the goal is to illustrate how dataset registration is wired, not provide drop-in data sharing modules. See the KustoDatabaseDataSet resource reference for all available configuration options.
Let's configure Azure Data Share Kusto Database Datasets
Get started with Pulumi Cloud, then follow our quick setup guide to deploy this infrastructure.
Try Pulumi Cloud for FREEFrequently Asked Questions
Resource Configuration
kind (set to “KustoDatabase”) and kustoDatabaseResourceId (the resource ID of your Kusto database). Additionally, you need to provide accountName, dataSetName, resourceGroupName, and shareName./subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterId}/databases/{databaseId}Lifecycle & Immutability
accountName, dataSetName, resourceGroupName, and shareName. Changing any of these requires replacing the resource.