Avvio rapido: Creare un provider di risorse personalizzato di Azure e distribuire risorse personalizzate

In questa guida introduttiva si crea un provider di risorse personalizzato e si distribuiscono risorse personalizzate per tale provider di risorse. Per altre informazioni sui provider di risorse personalizzati, vedere Panoramica dei provider di risorse personalizzati di Azure.

Prerequisiti

Preparare l'ambiente per l'interfaccia della riga di comando di Azure.

Gli esempi dell'interfaccia della riga di comando di Azure usano az rest per richieste REST. Per altre informazioni, vedere az rest.

Distribuire un provider di risorse personalizzato

Per configurare il provider di risorse personalizzato, distribuire un modello di esempio nella sottoscrizione di Azure.

Il modello distribuisce le risorse seguenti nella sottoscrizione:

  • App per le funzioni con le operazioni per le risorse e le azioni.
  • Archiviazione account per l'archiviazione degli utenti creati tramite il provider di risorse personalizzato.
  • Provider di risorse personalizzato che definisce i tipi di risorse e le azioni personalizzati. Usa l'endpoint dell'app per le funzioni per inviare richieste.
  • Risorsa personalizzata dal provider di risorse personalizzato.

Per distribuire il provider di risorse personalizzato, usare l'interfaccia della riga di comando di Azure, PowerShell o il portale di Azure.

In questo esempio viene richiesto di specificare un gruppo di risorse, la località e il nome dell'app per le funzioni del provider. I nomi sono archiviati in variabili che vengono usate in altri comandi. I comandi az group create e az deployment group create distribuiscono le risorse.

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

Per distribuire il modello dal portale di Azure, selezionare il pulsante Distribuisci in Azure.

Button to deploy the Resource Manager template to Azure.

Visualizzare il provider di risorse e la risorsa personalizzati

Nel portale il provider di risorse personalizzato è un tipo di risorsa nascosto. Per verificare che il provider di risorse sia stato distribuito, passare al gruppo di risorse e selezionare Mostra tipi nascosti.

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

Per visualizzare la risorsa personalizzata distribuita, usare l'operazione GET sul tipo di risorsa. Il tipo di Microsoft.CustomProviders/resourceProviders/users risorsa visualizzato nella risposta JSON include la risorsa creata dal modello.

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

Si riceve la risposta:

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

Chiamare un'azione

Il provider di risorse personalizzato ha anche un'azione denominata ping. Il codice che elabora la richiesta viene implementato nell'app per le funzioni. L'azione ping risponde con un messaggio di saluto.

Per inviare una ping richiesta, usare l'operazione POST sull'azione.

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

Si riceve la risposta:

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

Usare PUT per creare una risorsa

In questa guida introduttiva il modello usa il tipo di Microsoft.CustomProviders/resourceProviders/users risorsa per distribuire una risorsa. È anche possibile usare un'operazione PUT per creare una risorsa. Ad esempio, se una risorsa non viene distribuita con il modello, l'operazione PUT creerà una risorsa.

In questo esempio, poiché il modello ha già distribuito una risorsa, l'operazione PUT crea una nuova risorsa.

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

Si riceve la risposta:

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

È possibile rieseguire l'operazione GET dalla sezione view custom resource provider and resource (Provider di risorse e risorse personalizzate) per visualizzare le due risorse create. Questo esempio mostra l'output del comando dell'interfaccia della riga di comando di 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"
    }
  ]
}

Comandi del provider di risorse personalizzato

Usare i comandi di custom-providers per gestire il provider di risorse personalizzato.

Elencare i provider di risorse personalizzati

Il comando list elenca tutti i provider di risorse personalizzati presenti in una sottoscrizione. Con l'impostazione predefinita vengono elencati i provider di risorse personalizzati per la sottoscrizione corrente, ma è anche possibile specificare il parametro --subscription. Per visualizzare l'elenco per un gruppo di risorse, usare il parametro --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
  }
]

Visualizzare le proprietà

Usare il comando show per visualizzare tutte le proprietà del provider di risorse personalizzato. Il formato dell'output è simile a quello dell'output di list.

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

Creazione di una nuova risorsa

Usare il comando create per creare o aggiornare un provider di risorse personalizzato. In questo esempio vengono aggiornati actions e 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"
  }
],

Aggiornare i tag del provider

Il comando update consente di aggiornare solo i tag per un provider di risorse personalizzato. Il tag viene visualizzato nel servizio app del provider di risorse personalizzato del portale di Azure.

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

Eliminare un provider di risorse personalizzato

Il comando delete chiede conferma ed elimina solo il provider di risorse personalizzato. L'account di archiviazione, il servizio app e il piano di servizio app non vengono eliminati. Dopo l'eliminazione del provider, viene nuovamente visualizzato il prompt dei comandi.

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

Pulire le risorse

Se le risorse create in questo articolo sono state completate, è possibile eliminare il gruppo di risorse. Quando si elimina un gruppo di risorse, tutte le risorse in tale gruppo di risorse vengono eliminate.

az group delete --resource-group $rgName

Passaggi successivi

Per un'introduzione ai provider di risorse personalizzati, vedere l'articolo seguente: