Szybki start: tworzenie niestandardowego dostawcy zasobów platformy Azure i wdrażanie zasobów niestandardowych

W tym przewodniku Szybki start utworzysz niestandardowego dostawcę zasobów i wdrożysz zasoby niestandardowe dla tego dostawcy zasobów. Aby uzyskać więcej informacji na temat niestandardowych dostawców zasobów, zobacz Omówienie niestandardowych dostawców zasobów platformy Azure.

Wymagania wstępne

Przygotowanie środowiska do interfejsu wiersza polecenia platformy Azure.

Przykłady interfejsu wiersza polecenia platformy Azure są używane az rest dla REST żądań. Aby uzyskać więcej informacji, zobacz az rest.

Wdrażanie niestandardowego dostawcy zasobów

Aby skonfigurować niestandardowego dostawcę zasobów, wdróż przykładowy szablon w subskrypcji platformy Azure.

Szablon wdraża następujące zasoby w ramach subskrypcji:

  • Aplikacja funkcji z operacjami dla zasobów i akcji.
  • Konto magazynu do przechowywania użytkowników utworzonych za pośrednictwem niestandardowego dostawcy zasobów.
  • Niestandardowy dostawca zasobów, który definiuje niestandardowe typy zasobów i akcje. Używa on punktu końcowego aplikacji funkcji do wysyłania żądań.
  • Zasób niestandardowy od niestandardowego dostawcy zasobów.

Aby wdrożyć niestandardowego dostawcę zasobów, użyj interfejsu wiersza polecenia platformy Azure, programu PowerShell lub witryny Azure Portal.

W tym przykładzie zostanie wyświetlony monit o wprowadzenie grupy zasobów, lokalizacji i nazwy aplikacji funkcji dostawcy. Nazwy są przechowywane w zmiennych, które są używane w innych poleceniach. Polecenia az group create i az deployment group create wdrażają zasoby.

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

Aby wdrożyć szablon w witrynie Azure Portal, wybierz przycisk Wdróż na platformie Azure .

Button to deploy the Resource Manager template to Azure.

Wyświetlanie niestandardowego dostawcy zasobów i zasobu

W portalu niestandardowy dostawca zasobów jest ukrytym typem zasobu. Aby potwierdzić, że dostawca zasobów został wdrożony, przejdź do grupy zasobów i wybierz pozycję Pokaż ukryte typy.

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

Aby wyświetlić wdrożony zasób niestandardowy, użyj GET operacji typu zasobu. Typ Microsoft.CustomProviders/resourceProviders/users zasobu pokazany w odpowiedzi JSON zawiera zasób utworzony przez szablon.

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

Otrzymasz odpowiedź:

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

Akcja wywołania

Niestandardowy dostawca zasobów ma również akcję o nazwie ping. Kod, który przetwarza żądanie, jest implementowany w aplikacji funkcji. Akcja ping odpowiada z powitaniem.

Aby wysłać ping żądanie, użyj POST operacji w ramach akcji.

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

Otrzymasz odpowiedź:

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

Tworzenie zasobu przy użyciu funkcji PUT

W tym przewodniku Szybki start szablon użył typu Microsoft.CustomProviders/resourceProviders/users zasobu do wdrożenia zasobu. Za pomocą PUT operacji można również utworzyć zasób. Jeśli na przykład zasób nie zostanie wdrożony przy użyciu szablonu, PUT operacja utworzy zasób.

W tym przykładzie, ponieważ szablon został już wdrożony zasób, PUT operacja tworzy nowy zasób.

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

Otrzymasz odpowiedź:

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

Możesz ponownie uruchomić operację GET w sekcji Wyświetl niestandardowego dostawcę zasobów i zasób , aby wyświetlić dwa utworzone zasoby. W tym przykładzie przedstawiono dane wyjściowe polecenia interfejsu wiersza polecenia platformy Azure.

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

Polecenia niestandardowego dostawcy zasobów

Użyj poleceń niestandardowych dostawców, aby pracować z niestandardowym dostawcą zasobów.

Wyświetlanie listy niestandardowych dostawców zasobów

Użyj polecenia , list aby wyświetlić wszystkich niestandardowych dostawców zasobów w subskrypcji. Wartość domyślna zawiera listę niestandardowych dostawców zasobów bieżącej subskrypcji lub można określić --subscription parametr . Aby wyświetlić listę dla grupy zasobów, użyj parametru --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
  }
]

Pokaż właściwości

Użyj polecenia , show aby wyświetlić właściwości niestandardowego dostawcy zasobów. Format danych wyjściowych przypomina list dane wyjściowe.

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

Tworzenie nowego zasobu

Użyj polecenia , create aby utworzyć lub zaktualizować niestandardowego dostawcę zasobów. W tym przykładzie zaktualizowano element actions i resourceTypes.

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

Aktualizowanie tagów dostawcy

Polecenie update aktualizuje tylko tagi dla niestandardowego dostawcy zasobów. W witrynie Azure Portal usługa aplikacji niestandardowego dostawcy zasobów wyświetla tag .

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

Usuwanie niestandardowego dostawcy zasobów

Polecenie delete wyświetla monit o usunięcie tylko niestandardowego dostawcy zasobów. Konto magazynu, usługa App Service i plan usługi App Service nie są usuwane. Po usunięciu dostawcy wrócisz do wiersza polecenia.

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

Czyszczenie zasobów

Jeśli skończysz z zasobami utworzonymi w tym artykule, możesz usunąć grupę zasobów. Po usunięciu grupy zasobów wszystkie zasoby w tej grupie zasobów zostaną usunięte.

az group delete --resource-group $rgName

Następne kroki

Aby zapoznać się z wprowadzeniem do niestandardowych dostawców zasobów, zobacz następujący artykuł: