Dataset Blob Storage
Manages a Data Share Blob Storage Dataset.
Example Usage
import * as pulumi from "@pulumi/pulumi";
import * as azure from "@pulumi/azure";
import * as azuread from "@pulumi/azuread";
const exampleResourceGroup = new azure.core.ResourceGroup("example", {
name: "example-resources",
location: "West Europe",
});
const exampleAccount = new azure.datashare.Account("example", {
name: "example-dsa",
location: exampleResourceGroup.location,
resourceGroupName: exampleResourceGroup.name,
identity: {
type: "SystemAssigned",
},
});
const exampleShare = new azure.datashare.Share("example", {
name: "example_ds",
accountId: exampleAccount.id,
kind: "CopyBased",
});
const exampleAccount2 = new azure.storage.Account("example", {
name: "examplestr",
resourceGroupName: exampleResourceGroup.name,
location: exampleResourceGroup.location,
accountTier: "Standard",
accountReplicationType: "RAGRS",
});
const exampleContainer = new azure.storage.Container("example", {
name: "example-sc",
storageAccountName: exampleAccount2.name,
containerAccessType: "container",
});
const example = azuread.getServicePrincipalOutput({
displayName: exampleAccount.name,
});
const exampleAssignment = new azure.authorization.Assignment("example", {
scope: exampleAccount2.id,
roleDefinitionName: "Storage Blob Data Reader",
principalId: example.apply(example => example.objectId),
});
const exampleDatasetBlobStorage = new azure.datashare.DatasetBlobStorage("example", {
name: "example-dsbsds-file",
dataShareId: exampleShare.id,
containerName: exampleContainer.name,
storageAccount: {
name: exampleAccount2.name,
resourceGroupName: exampleAccount2.resourceGroupName,
subscriptionId: "00000000-0000-0000-0000-000000000000",
},
filePath: "myfile.txt",
}, {
dependsOn: [exampleAssignment],
});
import pulumi
import pulumi_azure as azure
import pulumi_azuread as azuread
example_resource_group = azure.core.ResourceGroup("example",
name="example-resources",
location="West Europe")
example_account = azure.datashare.Account("example",
name="example-dsa",
location=example_resource_group.location,
resource_group_name=example_resource_group.name,
identity={
"type": "SystemAssigned",
})
example_share = azure.datashare.Share("example",
name="example_ds",
account_id=example_account.id,
kind="CopyBased")
example_account2 = azure.storage.Account("example",
name="examplestr",
resource_group_name=example_resource_group.name,
location=example_resource_group.location,
account_tier="Standard",
account_replication_type="RAGRS")
example_container = azure.storage.Container("example",
name="example-sc",
storage_account_name=example_account2.name,
container_access_type="container")
example = azuread.get_service_principal_output(display_name=example_account.name)
example_assignment = azure.authorization.Assignment("example",
scope=example_account2.id,
role_definition_name="Storage Blob Data Reader",
principal_id=example.object_id)
example_dataset_blob_storage = azure.datashare.DatasetBlobStorage("example",
name="example-dsbsds-file",
data_share_id=example_share.id,
container_name=example_container.name,
storage_account={
"name": example_account2.name,
"resource_group_name": example_account2.resource_group_name,
"subscription_id": "00000000-0000-0000-0000-000000000000",
},
file_path="myfile.txt",
opts = pulumi.ResourceOptions(depends_on=[example_assignment]))
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Azure = Pulumi.Azure;
using AzureAD = Pulumi.AzureAD;
return await Deployment.RunAsync(() =>
{
var exampleResourceGroup = new Azure.Core.ResourceGroup("example", new()
{
Name = "example-resources",
Location = "West Europe",
});
var exampleAccount = new Azure.DataShare.Account("example", new()
{
Name = "example-dsa",
Location = exampleResourceGroup.Location,
ResourceGroupName = exampleResourceGroup.Name,
Identity = new Azure.DataShare.Inputs.AccountIdentityArgs
{
Type = "SystemAssigned",
},
});
var exampleShare = new Azure.DataShare.Share("example", new()
{
Name = "example_ds",
AccountId = exampleAccount.Id,
Kind = "CopyBased",
});
var exampleAccount2 = new Azure.Storage.Account("example", new()
{
Name = "examplestr",
ResourceGroupName = exampleResourceGroup.Name,
Location = exampleResourceGroup.Location,
AccountTier = "Standard",
AccountReplicationType = "RAGRS",
});
var exampleContainer = new Azure.Storage.Container("example", new()
{
Name = "example-sc",
StorageAccountName = exampleAccount2.Name,
ContainerAccessType = "container",
});
var example = AzureAD.GetServicePrincipal.Invoke(new()
{
DisplayName = exampleAccount.Name,
});
var exampleAssignment = new Azure.Authorization.Assignment("example", new()
{
Scope = exampleAccount2.Id,
RoleDefinitionName = "Storage Blob Data Reader",
PrincipalId = example.Apply(getServicePrincipalResult => getServicePrincipalResult.ObjectId),
});
var exampleDatasetBlobStorage = new Azure.DataShare.DatasetBlobStorage("example", new()
{
Name = "example-dsbsds-file",
DataShareId = exampleShare.Id,
ContainerName = exampleContainer.Name,
StorageAccount = new Azure.DataShare.Inputs.DatasetBlobStorageStorageAccountArgs
{
Name = exampleAccount2.Name,
ResourceGroupName = exampleAccount2.ResourceGroupName,
SubscriptionId = "00000000-0000-0000-0000-000000000000",
},
FilePath = "myfile.txt",
}, new CustomResourceOptions
{
DependsOn =
{
exampleAssignment,
},
});
});
package main
import (
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/authorization"
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core"
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/datashare"
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage"
"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
exampleResourceGroup, err := core.NewResourceGroup(ctx, "example", &core.ResourceGroupArgs{
Name: pulumi.String("example-resources"),
Location: pulumi.String("West Europe"),
})
if err != nil {
return err
}
exampleAccount, err := datashare.NewAccount(ctx, "example", &datashare.AccountArgs{
Name: pulumi.String("example-dsa"),
Location: exampleResourceGroup.Location,
ResourceGroupName: exampleResourceGroup.Name,
Identity: &datashare.AccountIdentityArgs{
Type: pulumi.String("SystemAssigned"),
},
})
if err != nil {
return err
}
exampleShare, err := datashare.NewShare(ctx, "example", &datashare.ShareArgs{
Name: pulumi.String("example_ds"),
AccountId: exampleAccount.ID(),
Kind: pulumi.String("CopyBased"),
})
if err != nil {
return err
}
exampleAccount2, err := storage.NewAccount(ctx, "example", &storage.AccountArgs{
Name: pulumi.String("examplestr"),
ResourceGroupName: exampleResourceGroup.Name,
Location: exampleResourceGroup.Location,
AccountTier: pulumi.String("Standard"),
AccountReplicationType: pulumi.String("RAGRS"),
})
if err != nil {
return err
}
exampleContainer, err := storage.NewContainer(ctx, "example", &storage.ContainerArgs{
Name: pulumi.String("example-sc"),
StorageAccountName: exampleAccount2.Name,
ContainerAccessType: pulumi.String("container"),
})
if err != nil {
return err
}
example := azuread.LookupServicePrincipalOutput(ctx, azuread.GetServicePrincipalOutputArgs{
DisplayName: exampleAccount.Name,
}, nil)
exampleAssignment, err := authorization.NewAssignment(ctx, "example", &authorization.AssignmentArgs{
Scope: exampleAccount2.ID(),
RoleDefinitionName: pulumi.String("Storage Blob Data Reader"),
PrincipalId: pulumi.String(example.ApplyT(func(example azuread.GetServicePrincipalResult) (*string, error) {
return &example.ObjectId, nil
}).(pulumi.StringPtrOutput)),
})
if err != nil {
return err
}
_, err = datashare.NewDatasetBlobStorage(ctx, "example", &datashare.DatasetBlobStorageArgs{
Name: pulumi.String("example-dsbsds-file"),
DataShareId: exampleShare.ID(),
ContainerName: exampleContainer.Name,
StorageAccount: &datashare.DatasetBlobStorageStorageAccountArgs{
Name: exampleAccount2.Name,
ResourceGroupName: exampleAccount2.ResourceGroupName,
SubscriptionId: pulumi.String("00000000-0000-0000-0000-000000000000"),
},
FilePath: pulumi.String("myfile.txt"),
}, pulumi.DependsOn([]pulumi.Resource{
exampleAssignment,
}))
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azure.core.ResourceGroup;
import com.pulumi.azure.core.ResourceGroupArgs;
import com.pulumi.azure.datashare.inputs.AccountIdentityArgs;
import com.pulumi.azure.datashare.Share;
import com.pulumi.azure.datashare.ShareArgs;
import com.pulumi.azure.storage.Container;
import com.pulumi.azure.storage.ContainerArgs;
import com.pulumi.azuread.AzureadFunctions;
import com.pulumi.azuread.inputs.GetServicePrincipalArgs;
import com.pulumi.azure.authorization.Assignment;
import com.pulumi.azure.authorization.AssignmentArgs;
import com.pulumi.azure.datashare.DatasetBlobStorage;
import com.pulumi.azure.datashare.DatasetBlobStorageArgs;
import com.pulumi.azure.datashare.inputs.DatasetBlobStorageStorageAccountArgs;
import com.pulumi.resources.CustomResourceOptions;
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 exampleResourceGroup = new ResourceGroup("exampleResourceGroup", ResourceGroupArgs.builder()
.name("example-resources")
.location("West Europe")
.build());
var exampleAccount = new com.pulumi.azure.datashare.Account("exampleAccount", com.pulumi.azure.datashare.AccountArgs.builder()
.name("example-dsa")
.location(exampleResourceGroup.location())
.resourceGroupName(exampleResourceGroup.name())
.identity(AccountIdentityArgs.builder()
.type("SystemAssigned")
.build())
.build());
var exampleShare = new Share("exampleShare", ShareArgs.builder()
.name("example_ds")
.accountId(exampleAccount.id())
.kind("CopyBased")
.build());
var exampleAccount2 = new com.pulumi.azure.storage.Account("exampleAccount2", com.pulumi.azure.storage.AccountArgs.builder()
.name("examplestr")
.resourceGroupName(exampleResourceGroup.name())
.location(exampleResourceGroup.location())
.accountTier("Standard")
.accountReplicationType("RAGRS")
.build());
var exampleContainer = new Container("exampleContainer", ContainerArgs.builder()
.name("example-sc")
.storageAccountName(exampleAccount2.name())
.containerAccessType("container")
.build());
final var example = AzureadFunctions.getServicePrincipal(GetServicePrincipalArgs.builder()
.displayName(exampleAccount.name())
.build());
var exampleAssignment = new Assignment("exampleAssignment", AssignmentArgs.builder()
.scope(exampleAccount2.id())
.roleDefinitionName("Storage Blob Data Reader")
.principalId(example.applyValue(_example -> _example.objectId()))
.build());
var exampleDatasetBlobStorage = new DatasetBlobStorage("exampleDatasetBlobStorage", DatasetBlobStorageArgs.builder()
.name("example-dsbsds-file")
.dataShareId(exampleShare.id())
.containerName(exampleContainer.name())
.storageAccount(DatasetBlobStorageStorageAccountArgs.builder()
.name(exampleAccount2.name())
.resourceGroupName(exampleAccount2.resourceGroupName())
.subscriptionId("00000000-0000-0000-0000-000000000000")
.build())
.filePath("myfile.txt")
.build(), CustomResourceOptions.builder()
.dependsOn(exampleAssignment)
.build());
}
}
resources:
exampleResourceGroup:
type: azure:core:ResourceGroup
name: example
properties:
name: example-resources
location: West Europe
exampleAccount:
type: azure:datashare:Account
name: example
properties:
name: example-dsa
location: ${exampleResourceGroup.location}
resourceGroupName: ${exampleResourceGroup.name}
identity:
type: SystemAssigned
exampleShare:
type: azure:datashare:Share
name: example
properties:
name: example_ds
accountId: ${exampleAccount.id}
kind: CopyBased
exampleAccount2:
type: azure:storage:Account
name: example
properties:
name: examplestr
resourceGroupName: ${exampleResourceGroup.name}
location: ${exampleResourceGroup.location}
accountTier: Standard
accountReplicationType: RAGRS
exampleContainer:
type: azure:storage:Container
name: example
properties:
name: example-sc
storageAccountName: ${exampleAccount2.name}
containerAccessType: container
exampleAssignment:
type: azure:authorization:Assignment
name: example
properties:
scope: ${exampleAccount2.id}
roleDefinitionName: Storage Blob Data Reader
principalId: ${example.objectId}
exampleDatasetBlobStorage:
type: azure:datashare:DatasetBlobStorage
name: example
properties:
name: example-dsbsds-file
dataShareId: ${exampleShare.id}
containerName: ${exampleContainer.name}
storageAccount:
name: ${exampleAccount2.name}
resourceGroupName: ${exampleAccount2.resourceGroupName}
subscriptionId: 00000000-0000-0000-0000-000000000000
filePath: myfile.txt
options:
dependsOn:
- ${exampleAssignment}
variables:
example:
fn::invoke:
function: azuread:getServicePrincipal
arguments:
displayName: ${exampleAccount.name}
API Providers
This resource uses the following Azure API Providers:
Microsoft.DataShare
: 2019-11-01
Import
Data Share Blob Storage Datasets can be imported using the resource id
, e.g.
$ pulumi import azure:datashare/datasetBlobStorage:DatasetBlobStorage example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.DataShare/accounts/account1/shares/share1/dataSets/dataSet1
Properties
The name of the storage account container to be shared with the receiver. Changing this forces a new Data Share Blob Storage Dataset to be created.
The ID of the Data Share in which this Data Share Blob Storage Dataset should be created. Changing this forces a new Data Share Blob Storage Dataset to be created.
The name of the Data Share Dataset.
The path of the folder in the storage container to be shared with the receiver. Changing this forces a new Data Share Blob Storage Dataset to be created.
A storage_account
block as defined below. Changing this forces a new resource to be created.