Freigeben über


Schnellstart: Freigeben von Daten mithilfe von Azure Data Share und einer ARM-Vorlage

Hier erfahren Sie, wie Sie mithilfe einer Azure Resource Manager-Vorlage (ARM-Vorlage) eine neue Azure Data Share-Instanz anhand eines Azure-Speicherkontos einrichten. Außerdem wird beschrieben, wie Sie mit dem Freigeben von Daten für Kunden und Partner außerhalb Ihrer Azure-Organisation beginnen. Eine Liste der unterstützten Datenspeicher finden Sie unter Unterstützte Datenspeicher in Azure Data Share.

Eine Azure Resource Manager-Vorlage ist eine JSON (JavaScript Object Notation)-Datei, welche die Infrastruktur und die Konfiguration für Ihr Projekt definiert. Die Vorlage verwendet eine deklarative Syntax. Sie beschreiben Ihre geplante Bereitstellung, ohne die Abfolge der Programmierbefehle zum Erstellen der Bereitstellung zu schreiben.

Wenn Ihre Umgebung die Voraussetzungen erfüllt und Sie mit der Verwendung von ARM-Vorlagen vertraut sind, klicken Sie auf die Schaltfläche In Azure bereitstellen. Die Vorlage wird im Azure-Portal geöffnet.

Schaltfläche zum Bereitstellen der Resource Manager-Vorlage in Azure.

Voraussetzungen

Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

Überprüfen der Vorlage

Die in dieser Schnellstartanleitung verwendete Vorlage stammt von der Seite mit den Azure-Schnellstartvorlagen.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.5.6.12127",
      "templateHash": "9068130575551523333"
    }
  },
  "parameters": {
    "projectName": {
      "type": "string",
      "metadata": {
        "description": "Specify a project name that is used to generate resource names."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Specify the location for the resources."
      }
    },
    "invitationEmail": {
      "type": "string",
      "metadata": {
        "description": "Specify an email address for receiving data share invitations."
      }
    },
    "syncInterval": {
      "type": "string",
      "defaultValue": "Day",
      "allowedValues": [
        "Day",
        "Hour"
      ],
      "metadata": {
        "description": "Specify snapshot schedule recurrence."
      }
    },
    "syncTime": {
      "type": "string",
      "defaultValue": "[utcNow('yyyy-MM-ddTHH:mm:ssZ')]",
      "metadata": {
        "description": "Specify snapshot schedule start time."
      }
    }
  },
  "variables": {
    "storageAccountName": "[format('{0}store', parameters('projectName'))]",
    "containerName": "[format('{0}container', parameters('projectName'))]",
    "dataShareAccountName": "[format('{0}shareaccount', parameters('projectName'))]",
    "dataShareName": "[format('{0}share', parameters('projectName'))]",
    "roleAssignmentName": "[guid(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), variables('storageBlobDataReaderRoleDefinitionId'), resourceId('Microsoft.DataShare/accounts', variables('dataShareAccountName')))]",
    "inviteName": "[format('{0}invite', variables('dataShareName'))]",
    "storageBlobDataReaderRoleDefinitionId": "[resourceId('Microsoft.Authorization/roleDefinitions', '2a2b9908-6ea1-4ae2-8e65-a410df84e7d1')]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-04-01",
      "name": "[variables('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "accessTier": "Hot"
      }
    },
    {
      "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
      "apiVersion": "2021-04-01",
      "name": "[format('{0}/default/{1}', variables('storageAccountName'), variables('containerName'))]",
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
      ]
    },
    {
      "type": "Microsoft.DataShare/accounts",
      "apiVersion": "2021-08-01",
      "name": "[variables('dataShareAccountName')]",
      "location": "[parameters('location')]",
      "identity": {
        "type": "SystemAssigned"
      },
      "properties": {}
    },
    {
      "type": "Microsoft.DataShare/accounts/shares",
      "apiVersion": "2021-08-01",
      "name": "[format('{0}/{1}', variables('dataShareAccountName'), variables('dataShareName'))]",
      "properties": {
        "shareKind": "CopyBased"
      },
      "dependsOn": [
        "[resourceId('Microsoft.DataShare/accounts', variables('dataShareAccountName'))]"
      ]
    },
    {
      "type": "Microsoft.Authorization/roleAssignments",
      "apiVersion": "2020-04-01-preview",
      "scope": "[format('Microsoft.Storage/storageAccounts/{0}', variables('storageAccountName'))]",
      "name": "[variables('roleAssignmentName')]",
      "properties": {
        "roleDefinitionId": "[variables('storageBlobDataReaderRoleDefinitionId')]",
        "principalId": "[reference(resourceId('Microsoft.DataShare/accounts', variables('dataShareAccountName')), '2021-08-01', 'full').identity.principalId]",
        "principalType": "ServicePrincipal"
      },
      "dependsOn": [
        "[resourceId('Microsoft.DataShare/accounts', variables('dataShareAccountName'))]",
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
      ]
    },
    {
      "type": "Microsoft.DataShare/accounts/shares/dataSets",
      "apiVersion": "2021-08-01",
      "name": "[format('{0}/{1}/{2}', variables('dataShareAccountName'), variables('dataShareName'), variables('containerName'))]",
      "kind": "Container",
      "properties": {
        "subscriptionId": "[subscription().subscriptionId]",
        "resourceGroup": "[resourceGroup().name]",
        "storageAccountName": "[variables('storageAccountName')]",
        "containerName": "[variables('containerName')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts/blobServices/containers', split(format('{0}/default/{1}', variables('storageAccountName'), variables('containerName')), '/')[0], split(format('{0}/default/{1}', variables('storageAccountName'), variables('containerName')), '/')[1], split(format('{0}/default/{1}', variables('storageAccountName'), variables('containerName')), '/')[2])]",
        "[resourceId('Microsoft.DataShare/accounts/shares', variables('dataShareAccountName'), variables('dataShareName'))]",
        "[resourceId('Microsoft.DataShare/accounts/shares/invitations', variables('dataShareAccountName'), variables('dataShareName'), variables('inviteName'))]",
        "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]",
        "[resourceId('Microsoft.DataShare/accounts/shares/synchronizationSettings', variables('dataShareAccountName'), variables('dataShareName'), format('{0}_synchronizationSetting', variables('dataShareName')))]"
      ]
    },
    {
      "type": "Microsoft.DataShare/accounts/shares/invitations",
      "apiVersion": "2021-08-01",
      "name": "[format('{0}/{1}/{2}', variables('dataShareAccountName'), variables('dataShareName'), variables('inviteName'))]",
      "properties": {
        "targetEmail": "[parameters('invitationEmail')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.DataShare/accounts/shares', variables('dataShareAccountName'), variables('dataShareName'))]"
      ]
    },
    {
      "type": "Microsoft.DataShare/accounts/shares/synchronizationSettings",
      "apiVersion": "2021-08-01",
      "name": "[format('{0}/{1}/{2}', variables('dataShareAccountName'), variables('dataShareName'), format('{0}_synchronizationSetting', variables('dataShareName')))]",
      "kind": "ScheduleBased",
      "properties": {
        "recurrenceInterval": "[parameters('syncInterval')]",
        "synchronizationTime": "[parameters('syncTime')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.DataShare/accounts/shares', variables('dataShareAccountName'), variables('dataShareName'))]"
      ]
    }
  ]
}

Die folgenden Ressourcen sind in der Vorlage definiert:

Diese Vorlage führt folgende Aufgaben aus:

  • Erstellen eines Speicherkontos und eines Containers zur Verwendung als Datenquelle für die Datenfreigabe.
  • Erstellen eines Data Share-Kontos und einer Datenfreigabe.
  • Erstellen einer Rollenzuweisung, um der Quellressource der Datenfreigabe die Rolle „Storage-Blobdatenleser“ zuzuweisen. Siehe Rollen und Anforderungen für Azure Data Share.
  • Hinzufügen eines Datasets zur Datenfreigabe.
  • Hinzufügen von Empfängern zur Datenfreigabe.
  • Aktivieren eines Momentaufnahmezeitplans für die Datenfreigabe.

Diese Vorlage wurde zu Lernzwecken erstellt. In der Praxis verfügen Sie in der Regel über einige Daten in einem vorhandenen Speicherkonto. Die Rollenzuweisung müsste erstellt werden, bevor Sie eine Vorlage oder ein Skript zum Erstellen des Datasets ausführen. Beim Bereitstellen der Vorlage kann die folgende Fehlermeldung angezeigt werden:

"Missing permissions for DataShareAccount on resource 'subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>' (Code: 5006)"

Der Grund hierfür ist, dass die Bereitstellung versucht, das Dataset zu erstellen, bevor die Azure-Rollenzuweisung abgeschlossen ist. Die Bereitstellung kann trotz dieser Fehlermeldung erfolgreich sein. Sie können die Schritte im Abschnitt Überprüfen der bereitgestellten Ressourcen trotzdem durchführen.

Bereitstellen der Vorlage

  1. Wählen Sie das folgende Image aus, um sich bei Azure anzumelden und die Vorlage zu öffnen.

    Schaltfläche zum Bereitstellen der Resource Manager-Vorlage in Azure.

  2. Wählen Sie die folgenden Werte aus, bzw. geben Sie sie ein:

    • Abonnement: Wählen Sie ein Azure-Abonnement zum Erstellen der Datenfreigabe und anderer Ressourcen aus.
    • Ressourcengruppe: Klicken Sie auf Neu erstellen, um eine neue Ressourcengruppe zu erstellen, oder wählen Sie eine vorhandene Ressourcengruppe aus.
    • Standort: Wählen Sie einen Standort für die Ressourcengruppe aus.
    • Projektname: Geben Sie einen Projektnamen ein. Der Projektname wird verwendet, um Ressourcennamen zu generieren. Weitere Informationen finden Sie in den Variablendefinitionen in der vorherigen Vorlage.
    • Standort: Wählen Sie einen Standort für die Ressourcen aus. Sie können den gleichen Standort verwenden wie für die Ressourcengruppe.
    • Einladungs-E-Mail: Geben Sie die E-Mail-Adresse des Empfängers der Datenfreigabe für die Anmeldung bei Azure ein. Ein E-Mail-Alias funktioniert nicht.

    Übernehmen Sie für den Rest der Einstellungen die Standardwerte.

  3. Wählen Sie Ich stimme den oben genannten Geschäftsbedingungen zu und anschließend Kaufen aus.

Überprüfen der bereitgestellten Ressourcen

  1. Melden Sie sich beim Azure-Portal an.

  2. Öffnen Sie das Data Share-Konto, das Sie erstellt haben.

  3. Wählen Sie im Menü auf der linken Seite die Option Send Shares (Freigaben senden) aus. Das Speicherkonto sollte angezeigt werden.

  4. Wählen Sie Speicherkonto aus. Unter Details werden die Synchronisierungseinstellungen angezeigt, die Sie in der Vorlage konfiguriert haben.

    Synchronisierungseinstellungen des Azure Data Share-Speicherkontos

  5. Wählen Sie oben die Option Einladungen aus. Die E-Mail-Adresse, die Sie beim Bereitstellen der Vorlage angegeben haben, sollte angezeigt werden. Der Status sollte Ausstehend lauten.

Bereinigen von Ressourcen

Wenn Sie die Ressourcen nicht mehr benötigen, löschen Sie die Ressourcengruppe. Dadurch werden die Ressourcen in der Ressourcengruppe gelöscht.

$resourceGroupName = Read-Host -Prompt "Enter the resource group name"
Remove-AzResourceGroup -Name $resourceGroupName
Write-Host "Press [ENTER] to continue..."

Nächster Schritt

In dieser Schnellstartanleitung haben Sie erfahren, wie Sie eine Azure Data Share-Instanz erstellen und Empfänger einladen. Fahren Sie mit dem Tutorial Akzeptieren und Empfangen von Daten fort, um mehr darüber zu erfahren, wie ein Datenconsumer eine Datenfreigabe akzeptieren und empfangen kann.