Verwenden einer Azure Resource Manager-Vorlage zum Erstellen eines Arbeitsbereichs für Azure Machine Learning

In diesem Artikel erlernen Sie verschiedene Möglichkeiten zum Erstellen eines Azure Machine Learning-Arbeitsbereichs mithilfe von Azure Resource Manager-Vorlagen. Eine Resource Manager-Vorlage erleichtert das Erstellen von Ressourcen in einem einzelnen, koordinierten Vorgang. Eine Vorlage ist ein JSON-Dokument, das die Ressourcen definiert, die für eine Bereitstellung erforderlich sind. Es kann außerdem bestimmte Bereitstellungsparameter angeben. Parameter werden verwendet, um Eingabewerte bereitzustellen, wenn die Vorlage verwendet wird.

Weitere Informationen finden Sie unter Bereitstellen einer Anwendung mit einer Azure-Resource Manager-Vorlage.

Voraussetzungen

Einschränkungen

  • Wenn Sie einen neuen Arbeitsbereich erstellen, können Sie die vom Arbeitsbereich benötigten Dienste automatisch erstellen oder vorhandene Dienste verwenden. Wenn Sie vorhandene Dienste aus einem anderen Azure-Abonnement als dem des Arbeitsbereichs verwenden möchten, müssen Sie den Azure Machine Learning-Namespace in dem Abonnement mit diesen Dienst registrieren. Wenn Sie z. B. einen Arbeitsbereich in Abonnement A erstellen, der ein Speicherkonto aus Abonnement B verwendet, muss der Azure Machine Learning-Namespace in Abonnement B registriert werden, damit Sie das Speicherkonto mit dem Arbeitsbereich verwenden können.

    Der Ressourcenanbieter für Machine Learning ist Microsoft.MachineLearningServices. Informationen zum Überprüfen und Durchführen der Registrierung finden Sie im Artikel Azure-Ressourcenanbieter und -typen.

    Wichtig

    Dies betrifft für Ressourcen, die beim Erstellen des Arbeitsbereichs bereitgestellt werden, also Azure Storage-Konten, Azure Container Registry, Azure Key Vault und Application Insights.

  • Die Beispielvorlage verwendet möglicherweise nicht immer die neueste API-Version für Azure Machine Learning. Bevor Sie die Vorlage verwenden, empfehlen wir, sie so zu ändern, dass sie die neuesten API-Versionen verwendet. Informationen zu den neuesten API-Versionen für Azure Machine Learning finden Sie unter der Azure Machine Learning-REST-API.

    Tipp

    Jeder Azure-Dienst verfügt über einen eigenen Satz von API-Versionen. Informationen zur API für einen bestimmten Dienst finden Sie in den Dienstinformationen in der Azure-REST-API-Referenz.

    Um die API-Version zu aktualisieren, suchen Sie den Eintrag "apiVersion": "YYYY-MM-DD" für den Ressourcentyp, und aktualisieren Sie ihn auf die neueste Version. Das folgende Beispiel ist ein Eintrag für Azure Machine Learning:

    "type": "Microsoft.MachineLearningServices/workspaces",
    "apiVersion": "2023-10-01",
    

Mehrere Arbeitsbereiche im gleichen VNet

Die Vorlage unterstützt nicht mehrere Azure Machine Learning-Arbeitsbereiche, die im gleichen VNet bereitgestellt werden. Dies liegt daran, dass die Vorlage während der Bereitstellung neue DNS-Zonen erstellt.

Wenn Sie eine Vorlage erstellen möchten, die mehrere Arbeitsbereiche im selben VNet bereitstellt, richten Sie dies manuell ein (mithilfe des Azure-Portals oder der CLI) und verwenden Sie dann das Azure-Portal, um eine Vorlage zu generieren.

Verwenden von Arbeitsbereich-Resource Manager-Vorlagen

Die in diesem Dokument verwendete Azure Resource Manager-Vorlage befindet sich im Verzeichnis microsoft.machineleaerningservices/machine-learning-workspace-vnet des Azure Quickstart Templates GitHub Repository.

Diese Vorlage erstellt die folgenden Azure-Dienste:

  • Azure Storage-Konto
  • Azure-Schlüsseltresor
  • Azure Application Insights
  • Azure Container Registry
  • Azure Machine Learning-Arbeitsbereich

Die Ressourcengruppe ist der Container, der die Dienste enthält. Die verschiedenen Dienste sind für den Azure Machine Learning-Arbeitsbereich erforderlich.

Die Beispielvorlage verfügt über zwei erforderliche Parameter:

  • Parameter location für den Ort, an dem die Ressourcen erstellt werden.

    Die Vorlage verwendet den von Ihnen ausgewählten Ort für die meisten Ressourcen. Die Ausnahme ist hierbei der Application Insights-Dienst, der nicht an allen Orten verfügbar ist, an denen die anderen Dienste verfügbar sind. Wenn Sie einen Ort auswählen, an dem er nicht verfügbar ist, wird der Dienst am Ort „USA, Süden-Mitte“ erstellt.

  • Parameter workspaceName, den Anzeigenamen des Azure Machine Learning-Arbeitsbereichs.

    Hinweis

    Für den Namen des Arbeitsbereichs wird die Groß-/Kleinschreibung nicht beachtet.

    Die Namen der anderen Dienste werden nach dem Zufallsprinzip generiert.

Tipp

Während die Vorlage, die mit diesem Dokument verknüpft ist, eine neue Azure-Containerregistrierung erstellt, können Sie auch einen neuen Arbeitsbereich erstellen, ohne eine Containerregistrierung zu erstellen. Eine Containerregistrierung wird erstellt, wenn Sie einen Vorgang ausführen, der eine Containerregistrierung erfordert. Beispielsweise Trainieren oder Bereitstellen eines Modells.

Sie können auch auf eine vorhandene Containerregistrierung oder ein Speicherkonto in der Azure Resource Manager-Vorlage verweisen, anstatt eine neue Registrierung zu erstellen. Dabei müssen Sie entweder eine verwaltete Identität verwenden (Vorschau) oder das Administratorkonto für die Containerregistrierung aktivieren.

Warnung

Nachdem eine Azure Container Registry für einen Arbeitsbereich erstellt wurde, dürfen Sie diese nicht mehr löschen. Dadurch wird Ihr Azure Machine Learning-Arbeitsbereich beschädigt.

Weitere Informationen zu Vorlagen finden Sie in den folgenden Artikeln:

Bereitstellen der Vorlage

Zum Bereitstellen der Vorlage müssen Sie eine Ressourcengruppe erstellen.

Weitere Informationen finden Sie im Abschnitt Azure-Portal, wenn Sie die grafische Benutzeroberfläche verwenden möchten.

az group create --name "examplegroup" --location "eastus"

Nachdem die Ressourcengruppe erfolgreich erstellt wurde, stellen Sie die Vorlage mit dem folgenden Befehl bereit:

az deployment group create \
    --name "exampledeployment" \
    --resource-group "examplegroup" \
    --template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json" \
    --parameters workspaceName="exampleworkspace" location="eastus"

Standardmäßig sind alle als Teil der Vorlage erstellten Ressourcen neu. Sie haben jedoch auch die Möglichkeit, vorhandene Ressourcen zu verwenden. Durch die Bereitstellung zusätzlicher Parameter für die Vorlage können Sie vorhandene Ressourcen verwenden. Wenn Sie z. B. ein vorhandenes Speicherkonto verwenden möchten, legen Sie den storageAccountOption-Wert auf existing fest, und geben Sie den Namen Ihres Speicherkontos im Parameter storageAccountName an.

Wichtig

Wenn Sie ein vorhandenes Azure Storage-Konto verwenden möchten, darf es sich nicht um ein Premium-Konto (Premium_LRS oder Premium_GRS) handeln. Es darf auch keinen hierarchischen Namespace aufweisen (mit Azure Data Lake Storage Gen2 verwendet). Weder Storage Premium noch hierarchische Namespaces werden mit dem Standardspeicherkonto des Arbeitsbereichs unterstützt. Weder Storage Premium noch hierarchische Namespaces werden mit dem Standardspeicherkonto des Arbeitsbereichs unterstützt. Sie können Storage Premium noch hierarchische Namespaces mit nicht standardmäßigen Speicherkonten verwenden.

az deployment group create \
    --name "exampledeployment" \
    --resource-group "examplegroup" \
    --template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json" \
    --parameters workspaceName="exampleworkspace" \
      location="eastus" \
      storageAccountOption="existing" \
      storageAccountName="existingstorageaccountname"

Bereitstellen eines verschlüsselten Arbeitsbereichs

Die folgende Beispielvorlage zeigt, wie Sie einen Arbeitsbereich mit drei Einstellungen erstellen:

  • Es werden Einstellungen für hohe Vertraulichkeit für den Arbeitsbereich aktiviert. Dadurch wird eine neue Azure Cosmos DB-Instanz erstellt.
  • Die Verschlüsselung wird für den Arbeitsbereich aktiviert.
  • Es wird eine vorhandene Azure Key Vault-Instanz verwendet, um kundenseitig verwaltete Schlüssel abzurufen. Kundenseitig verwaltete Schlüssel werden zum Erstellen einer neuen Azure Cosmos DB-Instanz für den Arbeitsbereich verwendet.

Wichtig

Nachdem ein Arbeitsbereich erstellt wurde, können Sie die Einstellungen für vertrauliche Daten, Verschlüsselung, Key Vault-ID oder Schlüsselbezeichner nicht mehr ändern. Um diese Werte zu ändern, müssen Sie einen neuen Arbeitsbereich erstellen und dabei neue Werte verwenden.

Weitere Informationen finden Sie unter Kundenseitig verwaltete Schlüssel.

Wichtig

Es gibt einige bestimmte Anforderungen, die Ihr Abonnement erfüllen muss, bevor Sie diese Vorlage verwenden können:

  • Sie müssen über einen vorhandenen Azure Key Vault verfügen, der einen Verschlüsselungsschlüssel enthält.
  • Der Azure Key Vault muss sich in derselben Region befinden, in der Sie den Azure Machine Learning-Arbeitsbereich erstellen möchten.
  • Sie müssen die ID der Azure Key Vault-Instanz und den URI des Verschlüsselungsschlüssels angeben.

Schritte zum Erstellen von Tresor und Schlüssel finden Sie unter Konfigurieren von kundenseitig verwalteten Schlüsseln.

Zum Abrufen der Werte für die Parameter cmk_keyvault (Key Vault-ID) und resource_cmk_uri (Schlüssel-URI), die für diese Vorlage erforderlich sind, verwenden Sie die folgenden Schritte:

  1. Verwenden Sie den folgenden Befehl, um die Key Vault-ID abzurufen:

    az keyvault show --name <keyvault-name> --query 'id' --output tsv    
    

    Der Befehl gibt einen Wert zurück, der /subscriptions/{subscription-guid}/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<keyvault-name> ähnelt.

  2. Um den Wert für den URI für den kundenseitig verwalteten Schlüssel abzurufen, verwenden Sie folgenden Befehl:

    az keyvault key show --vault-name <keyvault-name> --name <key-name> --query 'key.kid' --output tsv    
    

Der Befehl gibt einen Wert zurück, der https://mykeyvault.vault.azure.net/keys/mykey/{guid} ähnelt.

Wichtig

Nachdem ein Arbeitsbereich erstellt wurde, können Sie die Einstellungen für vertrauliche Daten, Verschlüsselung, Key Vault-ID oder Schlüsselbezeichner nicht mehr ändern. Um diese Werte zu ändern, müssen Sie einen neuen Arbeitsbereich erstellen und dabei neue Werte verwenden.

Legen Sie die folgenden Parameter fest, um die Verwendung kundenseitig verwalteter Schlüssel beim Bereitstellen der Vorlage zu aktivieren:

  • encryption_status auf Aktiviert.
  • cmk_keyvault auf den cmk_keyvault-Wert, den Sie in den vorherigen Schritten erhalten haben.
  • resource_cmk_uri auf den resource_cmk_uri-Wert, den Sie in den vorherigen Schritten erhalten haben.
az deployment group create \
    --name "exampledeployment" \
    --resource-group "examplegroup" \
    --template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json" \
    --parameters workspaceName="exampleworkspace" \
      location="eastus" \
      encryption_status="Enabled" \
      cmk_keyvault="/subscriptions/{subscription-guid}/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<keyvault-name>" \
      resource_cmk_uri="https://mykeyvault.vault.azure.net/keys/mykey/{guid}" \

Wenn ein vom Kunden verwalteter Schlüssel verwendet wird, erstellt Azure Machine Learning eine sekundäre Ressourcengruppe, die die Azure Cosmos DB-Instanz enthält. Weitere Informationen finden Sie unter Verschlüsselung ruhender Daten in Azure Cosmos DB.

Als zusätzliche Konfiguration für Ihre Daten können Sie den confidential_data-Parameter auf true festlegen. Daraus resultiert Folgendes:

  • Die Verschlüsselung des lokalen Scratch-Datenträgers in Ihren Azure Machine Learning-Computeclustern wird gestartet, sofern Sie in Ihrem Abonnement keine vorherigen Cluster erstellt haben. Wenn Sie zuvor einen Cluster im Abonnement erstellt haben, öffnen Sie ein Supportticket, um die Verschlüsselung des für Ihre Computecluster aktivierten Scratch-Datenträgers zu aktivieren.

  • Die lokalen Scratch-Datenträger werden zwischen den Aufträgen bereinigt.

  • Unter Verwendung Ihres Schlüsseltresors werden Anmeldeinformationen für Speicherkonto, Containerregistrierung und SSH-Konto von der Ausführungsebene an Ihre Computecluster übergeben.

  • Die IP-Filterung wird aktiviert, um sicherzustellen, dass die zugrunde liegenden Batch-Pools nicht von anderen externen Diensten als Azure Machine Learning Service aufgerufen werden können.

    Wichtig

    Nachdem ein Arbeitsbereich erstellt wurde, können Sie die Einstellungen für vertrauliche Daten, Verschlüsselung, Key Vault-ID oder Schlüsselbezeichner nicht mehr ändern. Um diese Werte zu ändern, müssen Sie einen neuen Arbeitsbereich erstellen und dabei neue Werte verwenden.

    Weitere Informationen finden Sie unter Verschlüsselung ruhender Daten.

Bereitstellen des Arbeitsbereichs hinter einem virtuellen Netzwerk

Wenn Sie den vnetOption-Parameterwert entweder auf new oder existingfestlegen, können Sie die Ressourcen erstellen, die von einem Arbeitsbereich hinter einem virtuellen Netzwerk verwendet wird.

Wichtig

Bei der Containerregistrierung wird nur die SKU „Premium“ unterstützt.

Wichtig

Application Insights unterstützt keine Bereitstellung hinter einem virtuellen Netzwerk.

Bereitstellen des Arbeitsbereichs nur hinter einem privatem Endpunkt

Wenn sich ihre zugeordneten Ressourcen nicht hinter einem virtuellen Netzwerk befinden, können Sie den Parameter privateEndpointType auf AutoAproval oder ManualApproval festlegen, um den Arbeitsbereich hinter einem privaten Endpunkt bereitzustellen. Dies kann für neue und vorhandene Arbeitsbereiche erfolgen. Wenn Sie einen vorhandenen Arbeitsbereich aktualisieren, geben Sie die Vorlagenparameter anhand der Informationen aus dem vorhandenen Arbeitsbereich ein.

az deployment group create \
    --name "exampledeployment" \
    --resource-group "examplegroup" \
    --template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json" \
    --parameters workspaceName="exampleworkspace" \
      location="eastus" \
      privateEndpointType="AutoApproval"

Verwenden eines neuen virtuellen Netzwerks

Legen Sie zum Bereitstellen einer Ressource hinter einem neuen virtuellen Netzwerk die vnetOption zusammen mit den Einstellungen des virtuellen Netzwerks für die jeweilige Ressource auf neu fest. Die folgende Bereitstellung zeigt, wie Sie einen Arbeitsbereich mit der Speicherkontoressource hinter einem neuen virtuellen Netzwerk bereitstellen.

az deployment group create \
    --name "exampledeployment" \
    --resource-group "examplegroup" \
    --template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json" \
    --parameters workspaceName="exampleworkspace" \
      location="eastus" \
      vnetOption="new" \
      vnetName="examplevnet" \
      storageAccountBehindVNet="true"
      privateEndpointType="AutoApproval"

Alternativ können Sie mehrere oder alle abhängigen Ressourcen hinter einem virtuellen Netzwerk bereitstellen.

az deployment group create \
    --name "exampledeployment" \
    --resource-group "examplegroup" \
    --template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json" \
    --parameters workspaceName="exampleworkspace" \
      location="eastus" \
      vnetOption="new" \
      vnetName="examplevnet" \
      storageAccountBehindVNet="true" \
      keyVaultBehindVNet="true" \
      containerRegistryBehindVNet="true" \
      containerRegistryOption="new" \
      containerRegistrySku="Premium"
      privateEndpointType="AutoApproval"

Verwenden eines vorhandenen virtuellen Netzwerks und vorhandener Ressourcen

Wenn Sie einen Arbeitsbereich mit vorhandenen zugeordneten Ressourcen bereitstellen möchten, müssen Sie den vnetOption-Parameter zusammen mit Subnetzparametern auf vorhanden festlegen. Sie müssen jedoch im virtuellen Netzwerk für alle Ressourcen vor der Bereitstellung Dienstendpunkte erstellen. Wie bei Bereitstellungen neuer virtueller Netzwerke können sich eine oder alle Ihre Ressourcen hinter einem virtuellen Netzwerk befinden.

Wichtig

Das Subnetz sollte den Microsoft.Storage-Dienstendpunkt aufweisen

Wichtig

Subnetze erlauben keine Erstellung privater Endpunkte. Deaktivieren Sie den privaten Endpunkt, um das Subnetz zu aktivieren.

  1. Aktivieren Sie Dienstendpunkte für die Ressourcen.

    az network vnet subnet update --resource-group "examplegroup" --vnet-name "examplevnet" --name "examplesubnet" --service-endpoints "Microsoft.Storage"
    az network vnet subnet update --resource-group "examplegroup" --vnet-name "examplevnet" --name "examplesubnet" --service-endpoints "Microsoft.KeyVault"
    az network vnet subnet update --resource-group "examplegroup" --vnet-name "examplevnet" --name "examplesubnet" --service-endpoints "Microsoft.ContainerRegistry"
    
  2. Bereitstellen des Arbeitsbereichs

    az deployment group create \
    --name "exampledeployment" \
    --resource-group "examplegroup" \
    --template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json" \
    --parameters workspaceName="exampleworkspace" \
      location="eastus" \
      vnetOption="existing" \
      vnetName="examplevnet" \
      vnetResourceGroupName="examplegroup" \
      storageAccountBehindVNet="true" \
      keyVaultBehindVNet="true" \
      containerRegistryBehindVNet="true" \
      containerRegistryOption="new" \
      containerRegistrySku="Premium" \
      subnetName="examplesubnet" \
      subnetOption="existing"
      privateEndpointType="AutoApproval"
    

Verwenden des Azure-Portals

  1. Befolgen Sie die Schritte in Bereitstellen von Ressourcen mithilfe einer benutzerdefinierten Vorlage. Wählen Sie auf dem Bildschirm Vorlage auswählen den Eintrag Schnellstarts aus. Wenn er angezeigt wird, wählen Sie den Link „Klicken Sie hier, um das Vorlagenrepository zu öffnen“ aus. Über diesen Link gelangen Sie zum Verzeichnis quickstarts im Azure-Schnellstartvorlagen-Repository.

  2. Wählen Sie in der Liste der Schnellstartvorlagen die Option microsoft.machinelearningservices aus. Wählen Sie abschließend Deploy to Azure aus.

  3. Wenn die Vorlage angezeigt wird, geben Sie abhängig von Ihrem Bereitstellungsszenario die folgenden erforderlichen Informationen und sonstige Parameter an.

    • Abonnement: Wählen Sie aus, welches Azure-Abonnement für diese Ressourcen verwendet werden soll.
    • Ressourcengruppe: Wählen Sie eine Ressourcengruppe für die Aufnahme der Dienste aus, oder erstellen Sie eine.
    • Region: Wählen Sie die Azure-Region aus, in der die Ressourcen erstellt werden.
    • Arbeitsbereichsname: Der für den Azure Machine Learning-Arbeitsbereich, der erstellt wird, zu verwendende Name. Der Arbeitsbereichsname muss zwischen 3 und 33 Zeichen umfassen. Er darf nur alphanumerische Zeichen und Bindestriche („-“) enthalten.
    • Standort: Wählen Sie den Ort aus, an dem die Ressourcen erstellt werden.
  4. Klicken Sie auf Überprüfen + erstellen.

  5. Stimmen Sie auf dem Bildschirm Überprüfen + erstellen den aufgelisteten Geschäftsbedingungen zu, und wählen Sie Erstellen aus.

Weitere Informationen finden Sie unter Bereitstellen von Ressourcen mithilfe einer benutzerdefinierten Vorlage.

Problembehandlung

Fehler der Ressourcenanbieter

Wenn Sie einen Azure Machine Learning-Arbeitsbereich oder eine vom Arbeitsbereich verwendete Ressource erstellen, erhalten Sie möglicherweise eine Fehlermeldung ähnlich der folgenden:

  • No registered resource provider found for location {location}
  • The subscription is not registered to use namespace {resource-provider-namespace}

Die meisten Ressourcenanbieter werden automatisch registriert, aber nicht alle. Wenn Sie diese Meldung erhalten, müssen Sie den erwähnten Anbieter registrieren.

Die folgende Tabelle enthält eine Liste der Ressourcenanbieter, die für Azure Machine Learning erforderlich sind:

Ressourcenanbieter Zweck
Microsoft.MachineLearningServices Erstellen des Azure Machine Learning-Arbeitsbereichs
Microsoft.Storage Das Azure Storage-Konto wird als Standarddatenspeicher für den Arbeitsbereich verwendet.
Microsoft.ContainerRegistry Azure Container Registry wird vom Arbeitsbereich zum Erstellen von Docker-Images verwendet.
Microsoft.KeyVault Azure Key Vault wird vom Arbeitsbereich zum Speichern von Geheimnissen verwendet.
Microsoft.Notebooks Integrierte Notebooks in einer Azure Machine Learning-Compute-Instanz
Microsoft.ContainerService Wenn Sie die Bereitstellung trainierter Modelle in Azure Kubernetes Services planen

Wenn Sie einen kundenseitig verwalteten Schlüssel mit Azure Machine Learning verwenden möchten, müssen die folgenden Dienstanbieter registriert werden:

Ressourcenanbieter Zweck
Microsoft.DocumentDB Azure CosmosDB-Instanz, die Metadaten für den Arbeitsbereich protokolliert
Microsoft.Search Azure Search bietet Indizierungsfunktionen für den Arbeitsbereich.

Wenn Sie ein verwaltetes virtuelles Netzwerk mit Azure Machine Learning verwenden möchten, muss der Microsoft.Network Ressourcenanbieter registriert werden. Dieser Ressourcenanbieter wird vom Arbeitsbereich beim Erstellen privater Endpunkte für das verwaltete virtuelle Netzwerk verwendet.

Weitere Informationen zum Registrieren eines Ressourcenanbieters finden Sie unter Beheben von Fehlern bei der Ressourcenanbieterregistrierung.

Azure Key Vault-Zugriffsrichtlinie und Azure Resource Manager-Vorlagen

Wenn Sie eine Azure Resource Manager-Vorlage mehrmals zum Erstellen des Arbeitsbereichs und der zugehörigen Ressourcen (einschließlich Azure Key Vault) verwenden. Dies ist beispielsweise der Fall, wenn Sie die Vorlage mehrere Male mit den gleichen Parametern in einer Continuous Integration- und Deployment-Pipeline verwenden.

Die meisten Vorgänge zum Erstellen von Ressourcen mit Vorlagen sind idempotent, Key Vault löscht die Zugriffsrichtlinien jedoch jedes Mal, wenn die Vorlage verwendet wird. Das Löschen der Zugriffsrichtlinien unterbricht den Zugriff auf den Schlüsseltresor für vorhandene Arbeitsbereiche, die ihn verwenden. Es kann beispielsweise sein, dass für die Beenden/Erstellen-Funktionalität der Azure Notebooks-VM ein Fehler auftritt.

Folgende Ansätze werden empfohlen, um dieses Problem zu umgehen:

  • Stellen Sie die Vorlage nicht mehrmals mit den gleichen Parametern bereit, oder löschen Sie die vorhandenen Ressourcen, bevor Sie die Vorlage verwenden, um sie neu zu erstellen.

  • Untersuchen Sie die Key Vault-Zugriffsrichtlinien, und verwenden Sie sie dann zum Festlegen der accessPolicies-Eigenschaft der Vorlage. Zum Anzeigen der Zugriffsrichtlinien verwenden Sie den folgenden Azure CLI-Befehl:

    az keyvault show --name mykeyvault --resource-group myresourcegroup --query properties.accessPolicies
    

    Weitere Informationen zur Verwendung des accessPolicies-Abschnitts der Vorlage finden Sie im AccessPolicyEntry-Objektverweis.

  • Überprüfen Sie, ob die Key Vault-Ressource bereits vorhanden ist. Wenn dies der Fall ist, erstellen Sie sie nicht mithilfe der Vorlage neu. Wenn Sie z. B. den vorhandenen Key Vault verwenden möchten, anstatt einen neuen zu erstellen, nehmen Sie die folgenden Änderungen an der Vorlage vor:

    • Fügen Sie einen Parameter hinzu, der die ID einer vorhandenen Key Vault-Ressource annimmt:

      "keyVaultId":{
        "type": "string",
        "metadata": {
          "description": "Specify the existing Key Vault ID."
        }
      }
      
    • Entfernen Sie den Abschnitt, der eine Key Vault-Ressource erstellt:

      {
        "type": "Microsoft.KeyVault/vaults",
        "apiVersion": "2018-02-14",
        "name": "[variables('keyVaultName')]",
        "location": "[parameters('location')]",
        "properties": {
          "tenantId": "[variables('tenantId')]",
          "sku": {
            "name": "standard",
            "family": "A"
          },
          "accessPolicies": [
          ]
        }
      },
      
    • Entfernen Sie die Zeile "[resourceId('Microsoft.KeyVault/vaults', variables('keyVaultName'))]", aus dem Abschnitt dependsOn des Arbeitsbereichs. Ändern Sie zudem ein Eintrag keyVault im Abschnitt properties des Arbeitsbereichs, um auf den Parameter keyVaultId zu verweisen:

      {
        "type": "Microsoft.MachineLearningServices/workspaces",
        "apiVersion": "2019-11-01",
        "name": "[parameters('workspaceName')]",
        "location": "[parameters('location')]",
        "dependsOn": [
          "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]",
          "[resourceId('Microsoft.Insights/components', variables('applicationInsightsName'))]"
        ],
        "identity": {
          "type": "systemAssigned"
        },
        "sku": {
          "tier": "[parameters('sku')]",
          "name": "[parameters('sku')]"
        },
        "properties": {
          "friendlyName": "[parameters('workspaceName')]",
          "keyVault": "[parameters('keyVaultId')]",
          "applicationInsights": "[resourceId('Microsoft.Insights/components',variables('applicationInsightsName'))]",
          "storageAccount": "[resourceId('Microsoft.Storage/storageAccounts/',variables('storageAccountName'))]"
        }
      }
      

    Nachdem Sie diese Änderungen vorgenommen haben, können Sie beim Ausführen der Vorlage die ID der vorhandenen Key Vault-Ressource angeben. Die Vorlage verwendet den Schlüsseltresor anschließend erneut, indem die keyVault-Eigenschaft des Arbeitsbereichs auf die entsprechende ID festlegt wird.

    Um die ID des Key Vaults abzurufen, können Sie auf die Ausgabe des ursprünglichen Vorlagenauftrags verweisen oder die Azure CLI verwenden. Der folgende Befehl ist ein Beispiel für die Verwendung der Azure CLI zum Abrufen der ID der Key Vault Ressource:

    az keyvault show --name mykeyvault --resource-group myresourcegroup --query id
    

    Dieser Befehl gibt einen Wert zurück, der in etwa wie folgt aussieht:

    /subscriptions/{subscription-guid}/resourceGroups/myresourcegroup/providers/Microsoft.KeyVault/vaults/mykeyvault
    

Nächste Schritte