Informazioni di riferimento per il proxy di risorse personalizzate

Questo articolo illustra i requisiti per gli endpoint che implementano risorse personalizzate proxy. Se non si ha familiarità con i provider di risorse personalizzati di Azure, vedere la panoramica sui provider di risorse personalizzati.

Definire un endpoint di risorsa proxy

È possibile creare una risorsa proxy specificando su routingType "Proxy".

Provider di risorse personalizzato di esempio:

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

Creare un endpoint di risorsa proxy

Un endpoint che implementa un endpoint risorsa "Proxy" deve gestire la richiesta e la risposta per la nuova API in Azure. In questo caso, #resourceType* genererà una nuova API di risorse di Azure per PUT, GETe DELETE per eseguire CRUD su una singola risorsa, nonché GET per recuperare tutte le risorse esistenti.

Nota

I idcampi , namee type non sono obbligatori, ma sono necessari per integrare la risorsa personalizzata con un ecosistema di Azure esistente.

Risorsa di esempio:

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

Riferimento ai parametri:

Proprietà Esempio Descrizione
name '{myCustomResourceName}' Il nome della risorsa personalizzata.
tipo 'Microsoft.CustomProviders/resourceProviders/{resourceTypeName}' Lo spazio dei nomi del tipo di risorsa.
id '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/
providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/
myCustomResources/{myCustomResourceName}'
L'ID della risorsa.

Creare una risorsa personalizzata

Richiesta in ingresso dell'API di Azure:

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

Questa richiesta verrà quindi inoltrata all'endpoint nel formato :

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

La risposta dall'endpoint viene quindi inoltrata al cliente. La risposta deve restituire:

  • Documento oggetto JSON valido. Tutte le matrici e le stringhe devono essere annidate in un oggetto superiore.
  • L'intestazione Content-Type deve essere impostata su "application/json; charset=utf-8".

Risposta dell'endpoint:

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

Risposta del provider di risorse personalizzato di Azure:

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

Rimuovere una risorsa personalizzata

Richiesta in ingresso dell'API di Azure:

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

Questa richiesta verrà quindi inoltrata all'endpoint nel formato :

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}

La risposta dall'endpoint viene quindi inoltrata al cliente. La risposta deve restituire:

  • Documento oggetto JSON valido. Tutte le matrici e le stringhe devono essere annidate in un oggetto superiore.
  • L'intestazione Content-Type deve essere impostata su "application/json; charset=utf-8".

Risposta dell'endpoint:

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

Risposta del provider di risorse personalizzato di Azure:

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

Recuperare una risorsa personalizzata

Richiesta in ingresso dell'API di Azure:

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

Questa richiesta verrà quindi inoltrata all'endpoint nel formato :

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}

La risposta dall'endpoint viene quindi inoltrata al cliente. La risposta deve restituire:

  • Documento oggetto JSON valido. Tutte le matrici e le stringhe devono essere annidate in un oggetto superiore.
  • L'intestazione Content-Type deve essere impostata su "application/json; charset=utf-8".

Risposta dell'endpoint:

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

Risposta del provider di risorse personalizzato di Azure:

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

Enumerare tutte le risorse personalizzate

Richiesta in ingresso dell'API di Azure:

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

Questa richiesta verrà quindi inoltrata all'endpoint nel formato :

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

La risposta dall'endpoint viene quindi inoltrata al cliente. La risposta deve restituire:

  • Documento oggetto JSON valido. Tutte le matrici e le stringhe devono essere annidate in un oggetto superiore.
  • L'intestazione Content-Type deve essere impostata su "application/json; charset=utf-8".
  • L'elenco di risorse deve essere inserito nella proprietà di primo livello value .

Risposta dell'endpoint:

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

Risposta del provider di risorse personalizzato di Azure:

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

Passaggi successivi