Quickstart: Aangepaste Azure-resourceprovider maken en aangepaste resources implementeren

In deze quickstart maakt u een aangepaste resourceprovider en implementeert u aangepaste resources voor die resourceprovider. Zie Het overzicht van aangepaste resourceproviders van Azure voor meer informatie over aangepaste resourceproviders.

Vereisten

Bereid uw omgeving voor op Azure CLI.

Azure CLI-voorbeelden gebruiken az rest voor REST-aanvragen. Ga voor meer informatie naar az rest.

Aangepaste resourceprovider implementeren

Als u de aangepaste resourceprovider wilt instellen, implementeert u een voorbeeldsjabloon in uw Azure-abonnement.

Met de sjabloon worden de volgende resources geïmplementeerd in uw abonnement:

  • Functie-app met de bewerkingen voor de resources en acties.
  • Opslagaccount voor het opslaan van gebruikers die zijn gemaakt via de aangepaste resourceprovider.
  • Aangepaste resourceprovider waarmee de aangepaste resourcetypen en acties worden gedefinieerd. Er wordt gebruikgemaakt van het eindpunt voor de functie-app voor het verzenden van aanvragen.
  • Aangepaste resource van de aangepaste resourceprovider.

Als u de aangepaste resourceprovider wilt implementeren, gebruikt u Azure CLI, PowerShell of Azure Portal.

In dit voorbeeld wordt u gevraagd om een resourcegroep, locatie en naam van de functie-app van de provider in te voeren. De namen worden opgeslagen in variabelen die worden gebruikt in andere opdrachten. Met de opdrachten az group create en az deployment group create implementeert u de resources.

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

Als u de sjabloon vanuit Azure Portal wilt implementeren, selecteert u de knop Implementeren in Azure .

Button to deploy the Resource Manager template to Azure.

Aangepaste resourceprovider en resource weergeven

In de portal is de aangepaste resourceprovider een verborgen resourcetype. Als u wilt controleren of de resourceprovider is geïmplementeerd, gaat u naar de resourcegroep en selecteert u Verborgen typen weergeven.

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

Als u de aangepaste resource wilt zien die u hebt geïmplementeerd, gebruikt u de GET bewerking voor uw resourcetype. Het resourcetype Microsoft.CustomProviders/resourceProviders/users dat wordt weergegeven in het JSON-antwoord bevat de resource die door de sjabloon is gemaakt.

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

U ontvangt het antwoord:

{
  "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"
    }
  ]
}

Aanroepactie

Uw aangepaste resourceprovider heeft ook een actie met de naam ping. De code waarmee de aanvraag wordt verwerkt, is geïmplementeerd in de functie-app. De ping-actie beantwoordt met een begroeting.

Als u een ping aanvraag wilt verzenden, gebruikt u de POST bewerking voor uw actie.

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

U ontvangt het antwoord:

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

PUT gebruiken om een resource te maken

In deze quickstart heeft de sjabloon het resourcetype Microsoft.CustomProviders/resourceProviders/users gebruikt om een resource te implementeren. U kunt ook een PUT bewerking gebruiken om een resource te maken. Als een resource bijvoorbeeld niet met de sjabloon is geïmplementeerd, wordt er PUT een resource gemaakt.

In dit voorbeeld, omdat de sjabloon al een resource heeft geïmplementeerd, maakt de PUT bewerking een nieuwe resource.

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'}}"

U ontvangt het antwoord:

{
  "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"
}

U kunt de GET bewerking opnieuw uitvoeren vanuit de weergave aangepaste resourceprovider en resourcesectie om de twee resources weer te geven die zijn gemaakt. In dit voorbeeld ziet u uitvoer van de Azure CLI-opdracht.

{
  "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"
    }
  ]
}

Opdrachten voor de aangepaste resourceprovider

Gebruik de custom-providers-opdrachten om samen te werken met uw aangepaste resourceprovider.

Aangepaste resourceproviders weergeven

Gebruik de opdracht list om alle aangepaste resourceproviders in een abonnement weer te geven. De standaardlijst geeft alle aangepaste resourceproviders voor het huidige abonnement weer, maar u kunt ook de parameter --subscription opgeven. Gebruik de parameter --resource-group om een resourcegroep weer te geven.

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
  }
]

De eigenschappen weergeven

Gebruik de opdracht show om de eigenschappen van de aangepaste resourceprovider weer te geven. De uitvoerindeling lijkt op de list-uitvoer.

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

Een nieuwe resource maken

Gebruik de opdracht create om een aangepaste resourceprovider te maken of bij te werken. In dit voorbeeld worden de actions en resourceTypes bijgewerkt.

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"
  }
],

De labels van de provider bijwerken

Met de opdracht update worden alleen labels voor een aangepaste resourceprovider bijgewerkt. In Azure Portal geeft de app-service van de aangepaste resourceprovider het label weer.

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

Een aangepaste resourceprovider verwijderen

Met de opdracht delete wordt u gevraagd om alleen de aangepaste resourceprovider te verwijderen. Het opslagaccount, de app-service en het app-serviceabonnement worden niet verwijderd. Nadat de provider is verwijderd, wordt u teruggeleid naar een opdrachtprompt.

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

Resources opschonen

Als u klaar bent met de resources die in dit artikel zijn gemaakt, kunt u de resourcegroep verwijderen. Wanneer u een resourcegroep verwijdert, worden alle resources in die resourcegroep verwijderd.

az group delete --resource-group $rgName

Volgende stappen

Zie het volgende artikel voor een inleiding tot aangepaste resourceproviders: