Lägga till anpassade resurser i Azure REST API

Den här artikeln går igenom kraven och metodtipsen för att skapa slutpunkter för Azure Custom Resource Provider som implementerar anpassade resurser. Om du inte är bekant med anpassade Resursprovidrar i Azure kan du läsa översikten över anpassade resursprovidrar.

Definiera en resursslutpunkt

En slutpunkt är en URL som pekar på en tjänst som implementerar det underliggande kontraktet mellan den och Azure. Slutpunkten definieras i den anpassade resursprovidern och kan vara valfri offentligt tillgänglig URL. Exemplet nedan har en resourceType som heter myCustomResource implementerad av endpointURL.

Exempel på ResourceProvider:

{
  "properties": {
    "resourceTypes": [
      {
        "name": "myCustomResource",
        "routingType": "Proxy, Cache",
        "endpoint": "https://{endpointURL}/"
      }
    ]
  },
  "location": "eastus",
  "type": "Microsoft.CustomProviders/resourceProviders",
  "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}",
  "name": "{resourceProviderName}"
}

Skapa en resursslutpunkt

En slutpunkt som implementerar en resourceType måste hantera begäran och svaret för det nya API:et i Azure. När en anpassad resursprovider med en resourceType skapas genererar den en ny uppsättning API:er i Azure. I det här fallet genererar resourceType ett nytt Azure-resurs-API för PUT, GEToch DELETE för att utföra CRUD på en enskild resurs samt GET för att hämta alla befintliga resurser:

Manipulera enskild resurs (PUT, GEToch DELETE):

/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResource/{myCustomResourceName}

Hämta alla resurser (GET):

/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResource

För anpassade resurser erbjuder anpassade resursproviders två typer av routingTypes: "Proxy" och "Proxy, Cache".

proxyroutningstyp

RoutingType-proxyservrarnaProxy för alla begärandemetoder till slutpunkten som anges i den anpassade resursprovidern. När du ska använda "Proxy":

  • Fullständig kontroll över svaret behövs.
  • Integrera system med befintliga resurser.

Mer information om resurserProxy finns i referensen för den anpassade resursproxyn

routningstyp för proxycache

Proxy, CacheRoutingType-proxyservrarnaPUT och DELETE förfrågningsmetoderna till slutpunkten som anges i den anpassade resursprovidern. Den anpassade resursprovidern returnerar GET automatiskt begäranden baserat på vad den har lagrat i cacheminnet. Om en anpassad resurs markeras med cacheminnet lägger den anpassade resursprovidern även till/skriver över fält i svaret för att göra API:erna azure-kompatibla. När du ska använda "Proxy, Cache":

  • Skapa ett nytt system som inte har några befintliga resurser.
  • Arbeta med befintliga Azure-ekosystem.

Mer information om resurserProxy, Cache finns i referensen för anpassad resurscache

Skapa en anpassad resurs

Det finns två huvudsakliga sätt att skapa en anpassad resurs från en anpassad resursprovider:

  • Azure CLI
  • Azure Resource Manager-mallar

Azure CLI

Skapa en anpassad resurs:

az resource create --is-full-object \
                   --id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/{resourceTypeName}/{customResourceName} \
                   --properties \
                    '{
                        "location": "eastus",
                        "properties": {
                            "myProperty1": "myPropertyValue1",
                            "myProperty2": {
                                "myProperty3": "myPropertyValue3"
                            }
                        }
                    }'
Parameter Krävs Beskrivning
is-full-object Ja Anger att egenskapsobjektet innehåller andra alternativ, till exempel plats, taggar, sku och/eller plan.
id Ja Resurs-ID för den anpassade resursen. Detta bör finnas utanför ResourceProvider
properties Ja Begärandetexten som ska skickas till slutpunkten.

Ta bort en anpassad Azure-resurs:

az resource delete --id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/{resourceTypeName}/{customResourceName}
Parameter Krävs Beskrivning
id Ja Resurs-ID för den anpassade resursen. Detta bör finnas utanför ResourceProvider.

Hämta en anpassad Azure-resurs:

az resource show --id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/{resourceTypeName}/{customResourceName}
Parameter Krävs Beskrivning
id Ja Resurs-ID för den anpassade resursen. Detta bör finnas utanför ResourceProvider

Azure Resource Manager-mall

Anteckning

Resurser kräver att svaret innehåller en lämplig id, nameoch type från slutpunkten.

Azure Resource Manager-mallar kräver att id, nameoch type returneras korrekt från den underordnade slutpunkten. Ett returnerat resurssvar ska vara i formatet:

Exempel på slutpunktssvar :

{
  "properties": {
    "myProperty1": "myPropertyValue1",
    "myProperty2": {
        "myProperty3": "myPropertyValue3"
    }
  },
  "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{customResourceName}",
  "name": "{customResourceName}",
  "type": "Microsoft.CustomProviders/resourceProviders/{resourceTypeName}"
}

Exempel på Azure Resource Manager-mall:

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.CustomProviders/resourceProviders/{resourceTypeName}",
            "name": "{resourceProviderName}/{customResourceName}",
            "apiVersion": "2018-09-01-preview",
            "location": "eastus",
            "properties": {
                "myProperty1": "myPropertyValue1",
                "myProperty2": {
                    "myProperty3": "myPropertyValue3"
                }
            }
        }
    ]
}
Parameter Krävs Beskrivning
resourceTypeName Ja NamnetresourceType som definierats i den anpassade resursprovidern.
resourceProviderName Ja Namnet på den anpassade resursproviderinstansen.
customResourceName Ja Det anpassade resursnamnet.

Nästa steg