Schnellstart: Erstellen eines benutzerdefinierten Azure-Ressourcenanbieters und Bereitstellen benutzerdefinierter Ressourcen

In dieser Schnellstartanleitung erstellen Sie einen benutzerdefinierten Ressourcenanbieter und stellen benutzerdefinierte Ressourcen für diesen Ressourcenanbieter bereit. Weitere Informationen zu benutzerdefinierten Ressourcenanbietern finden Sie unter Benutzerdefinierte Azure-Ressourcenanbieter: Übersicht.

Voraussetzungen

Bereiten Sie die Umgebung für die Azure CLI vor.

  • Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Schnellstart für Bash in Azure Cloud Shell.

  • Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.

    • Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Informationen zu anderen Anmeldeoptionen finden Sie unter Anmelden mit der Azure CLI.

    • Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden von Erweiterungen mit der Azure CLI.

    • Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.

In Azure CLI-Beispielen wird az rest für Anforderungen vom Typ REST verwendet. Weitere Informationen finden Sie unter az rest.

Bereitstellen eines benutzerdefinierten Ressourcenanbieters

Um den benutzerdefinierten Ressourcenanbieter einzurichten, stellen Sie eine Beispielvorlage in Ihrem Azure-Abonnement bereit.

Die Vorlage stellt die folgenden Ressourcen in Ihrem Abonnement bereit:

  • Funktions-App mit den Vorgängen für die Ressourcen und Aktionen.
  • Speicherkonto zum Speichern von Benutzern, die durch den benutzerdefinierten Ressourcenanbieter erstellt werden.
  • Benutzerdefinierter Ressourcenanbieter, der die benutzerdefinierten Ressourcentypen und Aktionen definiert. Der Endpunkt der Funktions-App wird zum Senden von Anforderungen verwendet.
  • Benutzerdefinierte Ressource vom benutzerdefinierten Ressourcenanbieter.

Verwenden Sie die Azure CLI, PowerShell oder das Azure-Portal, um den benutzerdefinierten Ressourcenanbieter bereitzustellen.

In diesem Beispiel werden Sie aufgefordert, eine Ressourcengruppe, einen Standort und den Funktions-App-Namen des Anbieters einzugeben. Die Namen werden in Variablen gespeichert, die in anderen Befehlen verwendet werden. Mit den Befehlen az group create und az deployment group create werden die Ressourcen bereitgestellt.

read -p "Enter a resource group name:" rgName &&
read -p "Enter the location (i.e. eastus):" location &&
read -p "Enter the provider's function app name:" funcName &&
templateUri="https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/custom-providers/customprovider.json" &&
az group create --name $rgName --location "$location" &&
az deployment group create --resource-group $rgName --template-uri $templateUri --parameters funcName=$funcName &&
echo "Press [ENTER] to continue ..." &&
read

Um die Vorlage über das Azure-Portal bereitzustellen, wählen Sie die Schaltfläche In Azure bereitstellen aus.

Button to deploy the Resource Manager template to Azure.

Anzeigen des benutzerdefinierten Anbieters mit Ressource

Im Portal ist der benutzerdefinierte Ressourcenanbieter ein ausgeblendeter Ressourcentyp. Um zu bestätigen, dass der Ressourcenanbieter bereitgestellt wurde, wechseln Sie zur Ressourcengruppe, und wählen Sie Ausgeblendete Typen anzeigen aus.

Screenshot of Azure portal displaying hidden resource types and resources deployed in a resource group.

Um die benutzerdefinierte Ressource anzuzeigen, die Sie bereitgestellt haben, verwenden Sie den GET-Vorgang für Ihren Ressourcentyp. Der in der JSON-Antwort angezeigte Ressourcentyp Microsoft.CustomProviders/resourceProviders/users umfasst die Ressource, die von der Vorlage erstellt wurde.

GET https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users?api-version=2018-09-01-preview
subID=$(az account show --query id --output tsv)
requestURI="https://management.azure.com/subscriptions/$subID/resourceGroups/$rgName/providers/Microsoft.CustomProviders/resourceProviders/$funcName/users?api-version=2018-09-01-preview"
az rest --method get --uri $requestURI

Sie erhalten die folgende Antwort:

{
  "value": [
    {
      "id": "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/ana",
      "name": "ana",
      "properties": {
        "FullName": "Ana Bowman",
        "Location": "Moon",
        "provisioningState": "Succeeded"
      },
      "type": "Microsoft.CustomProviders/resourceProviders/users"
    }
  ]
}

Aufrufaktion

Ihr benutzerdefinierter Ressourcenanbieter verfügt auch über eine Aktion namens ping. Der Code, der die Anforderung verarbeitet, wird in der Funktions-App implementiert. Die ping-Aktion antwortet mit einer Begrüßung.

Um eine ping-Anforderung zu senden, verwenden Sie den POST-Vorgang für Ihre benutzerdefinierte Aktion.

POST https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/ping?api-version=2018-09-01-preview
pingURI="https://management.azure.com/subscriptions/$subID/resourceGroups/$rgName/providers/Microsoft.CustomProviders/resourceProviders/$funcName/ping?api-version=2018-09-01-preview"
az rest --method post --uri $pingURI

Sie erhalten die folgende Antwort:

{
  "message": "hello <function-name>.azurewebsites.net",
  "pingcontent": {
    "source": "<function-name>.azurewebsites.net"
  }
}

Verwenden von PUT zum Erstellen einer Ressource

In dieser Schnellstartanleitung hat die Vorlage den Ressourcentyp Microsoft.CustomProviders/resourceProviders/users verwendet, um eine Ressource bereitzustellen. Sie können auch einen PUT-Vorgang verwenden, um eine Ressource zu erstellen. Wenn beispielsweise eine Ressource nicht mit der Vorlage bereitgestellt wird, erstellt der PUT-Vorgang eine Ressource.

In diesem Beispiel erstellt der PUT-Vorgang eine neue Ressource, weil die Vorlage bereits eine Ressource bereitgestellt hat.

PUT https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/<resource-name>?api-version=2018-09-01-preview

{"properties":{"FullName": "Test User", "Location": "Earth"}}
addURI="https://management.azure.com/subscriptions/$subID/resourceGroups/$rgName/providers/Microsoft.CustomProviders/resourceProviders/$funcName/users/testuser?api-version=2018-09-01-preview"
az rest --method put --uri $addURI --body "{'properties':{'FullName': 'Test User', 'Location': 'Earth'}}"

Sie erhalten die folgende Antwort:

{
  "id": "/subscriptions/<sub-ID>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/testuser",
  "name": "testuser",
  "properties": {
    "FullName": "Test User",
    "Location": "Earth",
    "provisioningState": "Succeeded"
  },
  "type": "Microsoft.CustomProviders/resourceProviders/users"
}

Sie können den GET-Vorgang aus dem Abschnitt Anzeigen des benutzerdefinierten Ressourcenanbieters mit Ressource erneut ausführen, um die beiden erstellten Ressourcen anzuzeigen. In diesem Beispiel wird die Ausgabe des Azure CLI-Befehls gezeigt.

{
  "value": [
    {
      "id": "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/ana",
      "name": "ana",
      "properties": {
        "FullName": "Ana Bowman",
        "Location": "Moon",
        "provisioningState": "Succeeded"
      },
      "type": "Microsoft.CustomProviders/resourceProviders/users"
    },
    {
      "id": "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/testuser",
      "name": "testuser",
      "properties": {
        "FullName": "Test User",
        "Location": "Earth",
        "provisioningState": "Succeeded"
      },
      "type": "Microsoft.CustomProviders/resourceProviders/users"
    }
  ]
}

Befehle für benutzerdefinierte Ressourcenanbieter

Verwenden Sie die custom-providers-Befehle, um mit Ihrem benutzerdefinierten Ressourcenanbieter zu arbeiten.

Auflisten benutzerdefinierter Ressourcenanbieter

Verwenden Sie den Befehl list, um alle benutzerdefinierten Ressourcenanbieter eines Abonnements anzuzeigen. In der Standardeinstellung werden die benutzerdefinierten Ressourcenanbieter des aktuellen Abonnements aufgelistet, oder Sie können den Parameter --subscription angeben. Um für eine Ressourcengruppe aufzulisten, verwenden Sie den Parameter --resource-group.

az custom-providers resource-provider list --subscription $subID
[
  {
    "actions": [
      {
        "endpoint": "https://<provider-name>.azurewebsites.net/api/{requestPath}",
        "name": "ping",
        "routingType": "Proxy"
      }
    ],
    "id": "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceproviders/<provider-name>",
    "location": "eastus",
    "name": "<provider-name>",
    "provisioningState": "Succeeded",
    "resourceGroup": "<rg-name>",
    "resourceTypes": [
      {
        "endpoint": "https://<provider-name>.azurewebsites.net/api/{requestPath}",
        "name": "users",
        "routingType": "Proxy, Cache"
      }
    ],
    "tags": {},
    "type": "Microsoft.CustomProviders/resourceproviders",
    "validations": null
  }
]

Anzeigen der Eigenschaften

Verwenden Sie den Befehl show, um die Eigenschaften des benutzerdefinierten Ressourcenanbieters anzuzeigen. Das Ausgabeformat ähnelt der Ausgabe von list.

az custom-providers resource-provider show --resource-group $rgName --name $funcName

Neue Ressource erstellen

Verwenden Sie den Befehl create, um einen benutzerdefinierten Ressourcenanbieter zu erstellen oder zu aktualisieren. In diesem Beispiel werden actions und resourceTypes aktualisiert.

az custom-providers resource-provider create --resource-group $rgName --name $funcName \
--action name=ping endpoint=https://myTestSite.azurewebsites.net/api/{requestPath} routing_type=Proxy \
--resource-type name=users endpoint=https://myTestSite.azurewebsites.net/api/{requestPath} routing_type="Proxy, Cache"
"actions": [
  {
    "endpoint": "https://myTestSite.azurewebsites.net/api/{requestPath}",
    "name": "ping",
    "routingType": "Proxy"
  }
],

"resourceTypes": [
  {
    "endpoint": "https://myTestSite.azurewebsites.net/api/{requestPath}",
    "name": "users",
    "routingType": "Proxy, Cache"
  }
],

Aktualisieren der Tags des Anbieters

Der Befehl update aktualisiert nur Tags für einen benutzerdefinierten Ressourcenanbieter. Im Azure-Portal zeigt der App Service des benutzerdefinierten Ressourcenanbieters das Tag an.

az custom-providers resource-provider update --resource-group $rgName --name $funcName --tags new=tag
"tags": {
  "new": "tag"
},

Löschen eines benutzerdefinierten Ressourcenanbieters

Bei Verwendung des Befehls delete werden Sie zur Bestätigung aufgefordert, und es wird nur der benutzerdefinierte Ressourcenanbieter gelöscht. Das Speicherkonto, der App Service und der App Service-Plan werden nicht gelöscht. Nachdem der Anbieter gelöscht wurde, wechseln Sie zu einer Eingabeaufforderung zurück.

az custom-providers resource-provider delete --resource-group $rgName --name $funcName

Bereinigen von Ressourcen

Wenn Sie die in diesem Artikel erstellten Ressourcen nicht mehr benötigen, können Sie die Ressourcengruppe löschen. Wenn Sie eine Ressourcengruppe löschen, werden alle darin enthaltenen Ressourcen gelöscht.

az group delete --resource-group $rgName

Nächste Schritte

Eine Einführung in benutzerdefinierte Ressourcenanbieter finden Sie im folgenden Artikel: