Freigeben über


Referenz für benutzerdefinierte Ressourcenproxies

In diesem Artikel werden die Anforderungen für Endpunkte erläutert, die benutzerdefinierte Proxyressourcen implementieren. Wenn Sie mit Azure Custom Resource Providers nicht vertraut sind, sehen Sie sich die Übersicht zu benutzerdefinierten Ressourcenanbietern an.

Definieren eines Proxyressourcenendpunkts

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

Beispiel für einen benutzerdefinierten Ressourcenanbieter:

{
  "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 "Proxy"-Ressourcenendpunkt 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 an einer einzelnen Ressource auszuführen, sowie GET, um alle vorhandenen Ressourcen abzurufen.

Hinweis

Die idFelder nameund type Felder sind nicht erforderlich, aber sie sind erforderlich, 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"
        }
    }
}

Parameterverweis:

Eigentum Beispiel Description
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

Eingehende Azure-API-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 im Formular 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 vom Endpunkt wird dann an den Kunden weitergeleitet. Die Antwort sollte folgendes zurückgeben:

  • Ein gültiges JSON-Objektdokument. Alle Arrays und Zeichenfolgen sollten unter einem obersten Objekt geschachtelt werden.
  • Der Content-Type Header sollte auf "application/json" festgelegt werden. charset=utf-8".

Endpunktantwort:

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

Eingehende Azure-API-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 im Formular 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 vom Endpunkt wird dann an den Kunden weitergeleitet. Die Antwort sollte folgendes zurückgeben:

  • Gültiges JSON-Objektdokument. Alle Arrays und Zeichenfolgen sollten unter einem obersten Objekt geschachtelt werden.
  • Der Content-Type Header sollte auf "application/json" festgelegt werden. charset=utf-8".

Endpunktantwort:

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

Eingehende Azure-API-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 im Formular 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 vom Endpunkt wird dann an den Kunden weitergeleitet. Die Antwort sollte folgendes zurückgeben:

  • Ein gültiges JSON-Objektdokument. Alle Arrays und Zeichenfolgen sollten unter einem obersten Objekt geschachtelt werden.
  • Der Content-Type Header sollte auf "application/json" festgelegt werden. charset=utf-8".

Endpunktantwort:

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

Eingehende Azure-API-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 im Formular 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 vom Endpunkt wird dann an den Kunden weitergeleitet. Die Antwort sollte folgendes zurückgeben:

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

Endpunktantwort:

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