Partager via


Informations de référence sur les proxys de ressources personnalisées

Cet article décrit les conditions requises pour les points de terminaison implémentant des ressources personnalisées proxy. Si vous n’êtes pas familiarisé avec les fournisseurs de ressources personnalisés Azure, consultez la vue d’ensemble des fournisseurs de ressources personnalisés.

Définir un point de terminaison de ressource proxy

Une ressource proxy peut être créée en spécifiant « Proxy » pour routingType.

Exemple de fournisseur de ressources personnalisé :

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

Créer un point de terminaison de ressource proxy

Un point de terminaison qui implémente un point de terminaison de ressource « Proxy » doit gérer la demande et la réponse pour la nouvelle API dans Azure. Dans ce cas, le #resourceType* génère une nouvelle API de ressource Azure pour PUT, GETet DELETE exécute CRUD sur une seule ressource, ainsi que GET pour récupérer toutes les ressources existantes.

Note

Les champs id, name, et type ne sont pas obligatoires, mais sont nécessaires pour intégrer la ressource personnalisée à un écosystème Azure existant.

Exemple de ressource :

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

Informations de référence sur les paramètres :

Propriété Sample Descriptif
nom ’{myCustomResourceName}’ Nom de la ressource personnalisée.
type ’Microsoft.CustomProviders/resourceProviders/{resourceTypeName}’ Espace de noms de type de ressource.
id ’/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/
providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/
myCustomResources/{myCustomResourceName}'
ID de la ressource.

Créer une ressource personnalisée

Requête entrante de l’API 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"
        }
    }
}

Cette demande sera ensuite transférée au point de terminaison sous la forme suivante :

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 réponse du point de terminaison est ensuite renvoyée au client. La réponse doit retourner :

  • Document d’objet JSON valide. Tous les tableaux et chaînes doivent être imbriqués sous un objet supérieur.
  • L’en-tête Content-Type doit être défini sur « application/json ; charset=utf-8".

Réponse du point de terminaison :

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

Réponse du fournisseur de ressources personnalisé 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"
        }
    }
}

Supprimer une ressource personnalisée

Requête entrante de l’API 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

Cette demande sera ensuite transférée au point de terminaison sous la forme suivante :

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 réponse du point de terminaison est ensuite renvoyée au client. La réponse doit fournir :

  • Document d’objet JSON valide. Tous les tableaux et chaînes doivent être imbriqués sous un objet supérieur.
  • L’en-tête Content-Type doit être défini sur « application/json ; charset=utf-8".

Réponse du point de terminaison :

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

Réponse du fournisseur de ressources personnalisé Azure :

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

Récupérer une ressource personnalisée

Requête entrante de l’API 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

Cette demande sera ensuite transférée au point de terminaison sous la forme suivante :

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 réponse du point de terminaison est ensuite renvoyée au client. La réponse doit renvoyer :

  • Document d’objet JSON valide. Tous les tableaux et chaînes doivent être imbriqués sous un objet supérieur.
  • L’en-tête Content-Type doit être défini sur « application/json ; charset=utf-8".

Réponse du point de terminaison :

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

Réponse du fournisseur de ressources personnalisé 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"
        }
    }
}

Énumérer toutes les ressources personnalisées

Requête entrante de l’API 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

Cette demande sera ensuite transférée au point de terminaison sous la forme suivante :

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 réponse du point de terminaison est ensuite renvoyée au client. La réponse doit retourner :

  • Document d’objet JSON valide. Tous les tableaux et chaînes doivent être imbriqués sous un objet supérieur.
  • L’en-tête Content-Type doit être défini sur « application/json ; charset=utf-8".
  • La liste des ressources doit être placée sous la propriété de niveau value supérieur.

Réponse du point de terminaison :

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

Réponse du fournisseur de ressources personnalisé 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"
                }
            }
        }
    ]
}

Étapes suivantes