Добавление настраиваемых ресурсов в Azure REST API

В этой статье рассматриваются требования и рекомендации по созданию конечных точек Поставщика настраиваемых ресурсов Azure, на которых применяются настраиваемые ресурсы. Если вы не знакомы с Поставщиками настраиваемых ресурсов Azure, см. Общие сведения о поставщиках настраиваемых ресурсов.

Инструкция по определению конечной точки ресурса

Конечная точка — это URL-адрес, который указывает на службу, применяющую контракт между ней и Azure. Конечная точка определяется в поставщике настраиваемых ресурсов и может быть любым общедоступным URL-адресом. Образец ниже имеет resourceType со значением myCustomResource применяемый endpointURL.

Образец ResourceProvider:

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

Создание конечной точки ресурса

Конечная точка, которая применяет resourceType должна обрабатывать запрос и направлять ответ на новый API в Azure. После создания поставщика настраиваемых ресурсов с resourceType, создается новый набор API в Azure. В этом случае resourceType создаст новый API ресурса Azure для PUT, GET и DELETE для выполнения CRUD на одном ресурсе, а также GET, чтобы найти все ресурсы:

Управление одним ресурсом (PUT, GET и DELETE):

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

Найти все ресурсы (GET):

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

Для настраиваемых ресурсов, поставщики настраиваемых ресурсов предлагают два типа routingTypes: "Proxy" и "Proxy, Cache".

тип маршрутизации через прокси-сервер

"Proxy" routingType прокси-серверы всех методов запроса к конечной точке указан поставщиком настраиваемых ресурсов. Когда использовать "Proxy":

  • необходим полный контроль над ответом.
  • интеграция систем с существующими ресурсами.

Дополнительные сведения о "Proxy" ресурсах, см. в справочнике прокси-серверов настраиваемых ресурсов

тип маршрутизации кэш прокси-сервера

"Proxy, Cache" routingType только прокси-серверы PUT и DELETE методы запросов к конечной точке указаны в поставщике настраиваемых ресурсов. Поставщик настраиваемых ресурсов автоматически вернет GET запросы на основании данных, сохраненных в его кэше. Если настраиваемый ресурс имеет маркировку с кэшем, то поставщик настраиваемых ресурсов также добавит или перепишет поля в ответе, чтобы обеспечить соответствие API Azure. Когда использовать "Proxy, Cache":

  • Создание новой системы без существующих ресурсов.
  • Работа с существующей экосистемой Azure.

Дополнительные сведения о "Proxy, Cache" ресурсах, см. в справочнике по кэшу настраиваемых ресурсов

Создание настраиваемого ресурса

Настраиваемый ресурс вне поставщика настраиваемых ресурсов можно создать двумя основными способами:

  • Azure CLI
  • Шаблоны Azure Resource Manager

Azure CLI

Создание настраиваемого ресурса:

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"
                            }
                        }
                    }'
Параметр Обязательно Описание
full-object да Указывает, что объект свойств включает в себя другие параметры, такие как местоположение, теги, sku и/или план.
идентификатор да Идентификатор ресурса настраиваемого ресурса. Он должен существовать вне ResourceProvider
properties да Текст запроса, который будет отправлен в конечную точку.

Удаление настраиваемого ресурса Azure:

az resource delete --id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/{resourceTypeName}/{customResourceName}
Параметр Обязательно Описание
идентификатор да Идентификатор ресурса настраиваемого ресурса. Он должен существовать вне ResourceProvider.

Получение настраиваемого ресурса Azure:

az resource show --id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/{resourceTypeName}/{customResourceName}
Параметр Обязательно Описание
идентификатор да Идентификатор ресурса настраиваемого ресурса. Он должен существовать вне ResourceProvider

Шаблон Azure Resource Manager

Примечание

Ресурсы требуют, чтобы ответ содержал соответствующие id, name и type из конечной точки.

Шаблоны Azure Resource Manager требуют, чтобы id, name и type были возвращены правильно из подчиненной конечной точки. Возвращенный ответ ресурса должен выглядеть следующим образом:

Образец ответа конечной точки:

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

Пример шаблона Диспетчера ресурсов Azure:

{
    "$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"
                }
            }
        }
    ]
}
Параметр Обязательно Описание
resourceTypeName да ИмяresourceType, определенное в пользовательском поставщике ресурсов.
resourceProviderName да Имя экземпляра поставщика настраиваемых ресурсов.
customResourceName да Имя настраиваемого ресурса.

Дальнейшие действия