Snabbstart: Skapa en anpassad Azure-resursprovider och distribuera anpassade resurser

I den här snabbstarten skapar du en anpassad resursprovider och distribuerar anpassade resurser för den resursprovidern. Mer information om anpassade resursprovidrar finns i Översikt över anpassade resursproviders i Azure.

Förutsättningar

Förbered din miljö för Azure CLI.

Azure CLI-exempel används az rest för REST begäranden. Mer information finns i az rest.

Distribuera anpassad resursprovider

Om du vill konfigurera den anpassade resursprovidern distribuerar du en exempelmall till din Azure-prenumeration.

Mallen distribuerar följande resurser till din prenumeration:

  • Funktionsapp med åtgärder för resurser och åtgärder.
  • Lagringskonto för lagring av användare som skapas via den anpassade resursprovidern.
  • Anpassad resursprovider som definierar anpassade resurstyper och åtgärder. Den använder funktionsappens slutpunkt för att skicka begäranden.
  • Anpassad resurs från den anpassade resursprovidern.

Om du vill distribuera den anpassade resursprovidern använder du Azure CLI, PowerShell eller Azure-portalen.

I det här exemplet uppmanas du att ange en resursgrupp, plats och providerns funktionsappnamn. Namnen lagras i variabler som används i andra kommandon. Kommandot az group create and az deployment group create distribuerar resurserna.

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

Om du vill distribuera mallen från Azure-portalen väljer du knappen Distribuera till Azure .

Button to deploy the Resource Manager template to Azure.

Visa anpassad resursprovider och resurs

I portalen är den anpassade resursprovidern en dold resurstyp. Bekräfta att resursprovidern har distribuerats genom att gå till resursgruppen och välja Visa dolda typer.

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

Om du vill se den anpassade resurs som du distribuerade använder du åtgärden för GET din resurstyp. Resurstypen Microsoft.CustomProviders/resourceProviders/users som visas i JSON-svaret innehåller den resurs som skapades av mallen.

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

Du får svaret:

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

Samtalsåtgärd

Din anpassade resursprovider har också en åtgärd med namnet ping. Koden som bearbetar begäran implementeras i funktionsappen. Åtgärden ping svarar med en hälsning.

Om du vill skicka en ping begäran använder du åtgärden för POST åtgärden.

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

Du får svaret:

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

Använda PUT för att skapa en resurs

I den här snabbstarten använde mallen resurstypen Microsoft.CustomProviders/resourceProviders/users för att distribuera en resurs. Du kan också använda en PUT åtgärd för att skapa en resurs. Om en resurs till exempel inte distribueras med mallen skapar åtgärden PUT en resurs.

I det här exemplet skapar åtgärden en ny resurs eftersom mallen redan har distribuerat en resurs PUT .

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

Du får svaret:

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

Du kan köra GET åtgärden igen från avsnittet Visa anpassad resursprovider och resurs för att visa de två resurser som skapades. Det här exemplet visar utdata från Azure CLI-kommandot.

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

Kommandon för anpassad resursprovider

Använd kommandona för anpassade providers för att arbeta med din anpassade resursprovider.

Lista anpassade resursprovidrar

list Använd kommandot för att visa alla anpassade resursprovidrar i en prenumeration. Standardvärdet visar den aktuella prenumerationens anpassade resursprovidrar, eller så kan du ange parametern --subscription . Om du vill visa en lista över en resursgrupp använder du parametern --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
  }
]

Visa egenskaperna

show Använd kommandot för att visa egenskaperna för den anpassade resursprovidern. Utdataformatet liknar list utdata.

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

Skapa en ny resurs

create Använd kommandot för att skapa eller uppdatera en anpassad resursprovider. I det här exemplet uppdateras actions och 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"
  }
],

Uppdatera providerns taggar

Kommandot update uppdaterar endast taggar för en anpassad resursprovider. I Azure-portalen visar den anpassade resursproviderns apptjänst taggen.

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

Ta bort en anpassad resursprovider

Kommandot delete frågar dig och tar bara bort den anpassade resursprovidern. Lagringskontot, apptjänsten och apptjänstplanen tas inte bort. När providern har tagits bort returneras du till en kommandotolk.

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

Rensa resurser

Om du är klar med resurserna som skapats i den här artikeln kan du ta bort resursgruppen. När du tar bort en resursgrupp tas alla resurser i resursgruppen bort.

az group delete --resource-group $rgName

Nästa steg

En introduktion till anpassade resursprovidrar finns i följande artikel: