Referenz zu benutzerdefinierten Ressourcenproxys

In diesem Artikel werden die Anforderungen an Endgeräte zur Implementierung benutzerdefinierter Proxyressourcen erläutert. Wenn Sie mit benutzerdefinierten Azure-Ressourcenanbietern noch nicht vertraut sind, finden Sie weitere Informationen in der Übersicht über benutzerdefinierte Ressourcenanbieter.

Definieren eines Proxyressourcenendpunkts

Eine Proxyressource kann erstellt werden, indem routingType als „Proxy“ angegeben wird.

Beispiel eines benutzerdefinierten Ressourcenanbieters:

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

Erstellen eines Proxyressourcenendpunkts

Ein Endpunkt, der einen Endpunkt einer Ressource des Typs „Proxy“ implementiert, muss die Anforderung und Antwort für die neue API in Azure verarbeiten. In diesem Fall generiert der #resourceType* eine neue Azure-Ressourcen-API für PUT, GET und DELETE, um CRUD-Vorgänge (Create, Retrieve, Update, Delete – Erstellen, Abrufen, Aktualisieren, Löschen) für eine einzelne Ressource auszuführen, sowie GET, um alle vorhandenen Ressourcen abzurufen.

Hinweis

Die Felder id, name und type sind nicht zwingend erforderlich, werden aber benötigt, um die benutzerdefinierte Ressource in ein vorhandenes Azure-Ökosystem zu integrieren.

Beispielressource:

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

Parameterreferenz:

Eigenschaft Beispiel BESCHREIBUNG
name '{myCustomResourceName}' Der Name der benutzerdefinierten Ressource.
type 'Microsoft.CustomProviders/resourceProviders/{resourceTypeName}' Der Namespace des Ressourcentyps.
id '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/
providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/
myCustomResources/{myCustomResourceName}'
Die Ressourcen-ID.

Erstellen einer benutzerdefinierten Ressource

Azure-API – Eingehende Anforderung:

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resource-provider-name}/myCustomResources/{myCustomResourceName}?api-version=2018-09-01-preview
Authorization: Bearer eyJ0e...
Content-Type: application/json

{
    "properties": {
        "myProperty1": "myPropertyValue1",
        "myProperty2": {
            "myProperty3" : "myPropertyValue3"
        }
    }
}

Diese Anforderung wird dann in folgender Form an den Endpunkt weitergeleitet:

PUT https://{endpointURL}/?api-version=2018-09-01-preview
Content-Type: application/json
X-MS-CustomProviders-RequestPath: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources/{myCustomResourceName}

{
    "properties": {
        "myProperty1": "myPropertyValue1",
        "myProperty2": {
            "myProperty3" : "myPropertyValue3"
        }
    }
}

Die Antwort wird vom Endpunkt dann an den Kunden zurückgesendet. Als Antwort sollte Folgendes zurückgegeben werden:

  • Ein gültiges JSON-Objektdokument. Alle Arrays und Zeichenfolgen müssen unter einem obersten Objekt geschachtelt sein.
  • Der Header Content-Type muss auf „application/json; charset=utf-8“ festgelegt werden.

Antwort des Endpunkts:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

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

Antwort des benutzerdefinierten Azure-Ressourcenanbieters:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

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

Entfernen einer benutzerdefinierten Ressource

Azure-API – Eingehende Anforderung:

Delete https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources/{myCustomResourceName}?api-version=2018-09-01-preview
Authorization: Bearer eyJ0e...
Content-Type: application/json

Diese Anforderung wird dann in folgender Form an den Endpunkt weitergeleitet:

Delete https://{endpointURL}/?api-version=2018-09-01-preview
Content-Type: application/json
X-MS-CustomProviders-RequestPath: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources/{myCustomResourceName}

Die Antwort wird vom Endpunkt dann an den Kunden zurückgesendet. Die Antwort sollte Folgendes zurückgeben:

  • Ein gültiges JSON-Objektdokument. Alle Arrays und Zeichenfolgen müssen unter einem obersten Objekt geschachtelt sein.
  • Der Header Content-Type muss auf „application/json; charset=utf-8“ festgelegt werden.

Antwort des Endpunkts:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

Antwort des benutzerdefinierten Azure-Ressourcenanbieters:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

Abrufen einer benutzerdefinierten Ressource

Azure-API – Eingehende Anforderung:

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources/{myCustomResourceName}?api-version=2018-09-01-preview
Authorization: Bearer eyJ0e...
Content-Type: application/json

Diese Anforderung wird dann in folgender Form an den Endpunkt weitergeleitet:

GET https://{endpointURL}/?api-version=2018-09-01-preview
Content-Type: application/json
X-MS-CustomProviders-RequestPath: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources/{myCustomResourceName}

Die Antwort wird vom Endpunkt dann an den Kunden zurückgesendet. Als Antwort sollte Folgendes zurückgegeben werden:

  • Ein gültiges JSON-Objektdokument. Alle Arrays und Zeichenfolgen müssen unter einem obersten Objekt geschachtelt sein.
  • Der Header Content-Type muss auf „application/json; charset=utf-8“ festgelegt werden.

Antwort des Endpunkts:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

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

Antwort des benutzerdefinierten Azure-Ressourcenanbieters:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

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

Aufzählen aller benutzerdefinierten Ressourcen

Azure-API – Eingehende Anforderung:

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources?api-version=2018-09-01-preview
Authorization: Bearer eyJ0e...
Content-Type: application/json

Diese Anforderung wird dann in folgender Form an den Endpunkt weitergeleitet:

GET https://{endpointURL}/?api-version=2018-09-01-preview
Content-Type: application/json
X-MS-CustomProviders-RequestPath: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources

Die Antwort wird vom Endpunkt dann an den Kunden zurückgesendet. Als Antwort sollte Folgendes zurückgegeben werden:

  • Ein gültiges JSON-Objektdokument. Alle Arrays und Zeichenfolgen müssen unter einem obersten Objekt geschachtelt sein.
  • Der Header Content-Type muss auf „application/json; charset=utf-8“ festgelegt werden.
  • Die Liste der Ressourcen sollte unter der Eigenschaft value der obersten Ebene platziert werden.

Antwort des Endpunkts:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "value" : [
        {
            "name": "{myCustomResourceName}",
            "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources/{myCustomResourceName}",
            "type": "Microsoft.CustomProviders/resourceProviders/myCustomResources",
            "properties": {
                "myProperty1": "myPropertyValue1",
                "myProperty2": {
                    "myProperty3" : "myPropertyValue3"
                }
            }
        }
    ]
}

Antwort des benutzerdefinierten Azure-Ressourcenanbieters:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
    "value" : [
        {
            "name": "{myCustomResourceName}",
            "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/myCustomResources/{myCustomResourceName}",
            "type": "Microsoft.CustomProviders/resourceProviders/myCustomResources",
            "properties": {
                "myProperty1": "myPropertyValue1",
                "myProperty2": {
                    "myProperty3" : "myPropertyValue3"
                }
            }
        }
    ]
}

Nächste Schritte