Hinzufügen benutzerdefinierter Ressourcen zur Azure-REST-API

In diesem Artikel werden die Anforderungen und bewährten Methoden für das Erstellen von Endpunkten für benutzerdefinierte Azure-Ressourcenanbieter erläutert, bei denen benutzerdefinierte Ressourcen implementiert werden. Wenn Sie mit benutzerdefinierten Azure-Ressourcenanbietern nicht vertraut sind, siehe die Übersicht über benutzerdefinierte Ressourcenanbieter.

Definieren eines Endpunkts einer Ressource

Ein Endpunkt ist eine URL, die auf einen Dienst verweist, der den zugrunde liegenden Vertrag zwischen ihm und Azure implementiert. Der Endpunkt ist im benutzerdefinierten Ressourcenanbieter definiert und kann jede öffentlich zugängliche URL sein. Das folgende Beispiel enthält einen Ressourcentyp namens myCustomResource, der von endpointURL implementiert wurde.

Beispiel eines Ressourcenanbieters:

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

Erstellen eines Ressourcenendpunkts

Ein Endpunkt, der einen Ressourcentyp implementiert, muss die Anforderung und Antwort für die neue API in Azure bearbeiten. Wenn ein benutzerdefinierter Ressourcenanbieter mit einem Ressourcentyp erstellt wird, generiert er in Azure einen neuen Satz von APIs. In diesem Fall erzeugt der Ressourcentyp eine neue Azure-Ressourcen-API für PUT, GET und DELETE, um CRUD-Vorgänge (Create [Erstellen], Retrieve [Abrufen], Update [Aktualisieren], Delete [Löschen]) für eine einzelne Ressource auszuführen, sowie GET, um alle vorhandenen Ressourcen abzurufen:

Bearbeiten Sie eine einzelne Ressource (PUT, GET und DELETE):

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

Rufen Sie alle Ressourcen ab (GET):

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

Für benutzerdefinierte Ressourcen bieten benutzerdefinierte Ressourcenanbieter zwei Routingtypen an: Proxy und Proxy, Cache.

Proxyroutingtyp

Der Proxy-Routingtyp leitet alle Anforderungsmethoden zu dem im benutzerdefinierten Ressourcenprovider angegebenen Endpunkt. Proxy sollte in folgenden Fällen verwendet werden:

  • Vollständige Kontrolle über die Antwort ist erforderlich.
  • Integrieren von Systemen mit bestehenden Ressourcen.

Weitere Informationen über Proxy-Ressourcen finden Sie in der Referenz zum benutzerdefinierten Ressourcenproxy.

Proxycache-Routingtyp

Der Proxy, Cache-Routingtyp leitet nur PUT- und DELETE-Anforderungsmethoden zu dem im benutzerdefinierten Ressourcenanbieter angegebenen Endpunkt. Der benutzerdefinierte Ressourcenanbieter gibt automatisch GET-Anforderungen auf Basis dessen zurück, was er im Cache gespeichert hat. Wenn eine benutzerdefinierte Ressource mit einem Cache markiert ist, fügt der benutzerdefinierte Ressourcenanbieter auch Felder in der Antwort hinzu bzw. überschreibt sie, um die APIs zu Azure konform zu machen. Proxy, Cache sollte in folgenden Fällen verwendet werden:

  • Erstellen eines neuen Systems, das über keine vorhandenen Ressourcen verfügt.
  • Arbeiten mit vorhandenem Azure-Ökosystem.

Weitere Informationen über Proxy, Cache-Ressourcen finden Sie in der Referenz zum benutzerdefinierten Ressourcencache.

Erstellen einer benutzerdefinierten Ressource

Es gibt prinzipiell zwei Möglichkeiten, eine benutzerdefinierte Ressource aus einem benutzerdefinierten Ressourcenanbieter zu erstellen:

  • Azure CLI
  • Azure Resource Manager-Vorlagen

Azure CLI

Erstellen einer benutzerdefinierten Ressource:

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 Erforderlich BESCHREIBUNG
is-full-object Ja Gibt an, dass das properties-Objekt noch andere Optionen enthält, z.B. „location“, „tags“, „sku“ und/oder „plan“.
id Ja Die Ressourcen-ID der benutzerdefinierten Ressource. Diese Ressource sollte außerhalb des Ressourcenanbieters vorhanden sein.
properties Ja Der Anforderungstext, der an den Endpunkt gesendet wird.

Löschen einer benutzerdefinierten Azure-Ressource:

az resource delete --id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/{resourceTypeName}/{customResourceName}
Parameter Erforderlich BESCHREIBUNG
id Ja Die Ressourcen-ID der benutzerdefinierten Ressource. Diese Ressource sollte außerhalb des Ressourcenanbieters vorhanden sein.

Abrufen einer benutzerdefinierten Azure-Ressource:

az resource show --id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/{resourceTypeName}/{customResourceName}
Parameter Erforderlich BESCHREIBUNG
id Ja Die Ressourcen-ID der benutzerdefinierten Ressource. Diese Ressource sollte außerhalb des Ressourcenanbieters vorhanden sein.

Azure Resource Manager-Vorlage

Hinweis

Ressourcen erfordern, dass die Antwort einen entsprechenden id, name und type aus dem Endpunkt enthält.

Azure Resource Manager-Vorlagen erfordern, dass id, name und type ordnungsgemäß vom Downstreamendpunkt zurückgegeben werden. Eine zurückgegebene Ressourcenantwort sollte folgende Form haben:

Beispiel einer Endpunktantwort:

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

Beispiel für eine Azure Resource Manager-Vorlage:

{
    "$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 Erforderlich BESCHREIBUNG
resourceTypeName Ja Der Name des im benutzerdefinierten Ressourcenanbieter definierten Ressourcentyps.
resourceProviderName Ja Der Name der Instanz des benutzerdefinierten Ressourcenanbieters.
customResourceName Ja Der Name der benutzerdefinierten Ressource.

Nächste Schritte