Быстрый старт: Создание пользовательского провайдера ресурсов Azure и развертывание кастомных ресурсов

В этом кратком руководстве вы создадите настраиваемый поставщик ресурсов и развернете настраиваемые ресурсы для этого поставщика ресурсов. Дополнительные сведения о настраиваемых поставщиках ресурсов см. в обзоре пользовательских поставщиков ресурсов Azure.

Предпосылки

Подготовьте среду к работе с Azure CLI.

Примеры Azure CLI используют az rest для запросов REST. Дополнительные сведения см. в статье az rest.

Развертывание пользовательского поставщика ресурсов

Чтобы настроить настраиваемый поставщик ресурсов, разверните пример шаблона в подписке Azure.

Шаблон развертывает следующие ресурсы в вашей подписке.

  • Функциональное приложение с операциями для ресурсов и их действий.
  • Учетная запись для хранения пользователей, созданных с помощью настраиваемого поставщика ресурсов.
  • Настраиваемый поставщик ресурсов, определяющий пользовательские типы ресурсов и действия. Она использует конечную точку приложения-функции для отправки запросов.
  • Пользовательский ресурс из пользовательского поставщика ресурсов.

Чтобы развернуть настраиваемый поставщик ресурсов, используйте Azure CLI, PowerShell или портал Azure.

В этом примере вам предлагается ввести группу ресурсов, расположение и имя приложения функции поставщика. Имена хранятся в переменных, которые используются в других командах. Команды az group create и az deployment group create выполняют развертывание ресурсов.

read -p "Enter a resource group name:" rgName &&
read -p "Enter the location (i.e. eastus):" location &&
read -p "Enter the provider's function app name:" funcName &&
templateUri="https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/custom-providers/customprovider.json" &&
az group create --name $rgName --location "$location" &&
az deployment group create --resource-group $rgName --template-uri $templateUri --parameters funcName=$funcName &&
echo "Press [ENTER] to continue ..." &&
read

Чтобы развернуть шаблон на портале Azure, нажмите кнопку "Развернуть в Azure ".

Кнопка для развертывания шаблона Resource Manager в Azure.

Просмотр пользовательского поставщика ресурсов и ресурса

На портале настраиваемый поставщик ресурсов является скрытым типом ресурса. Чтобы подтвердить, что поставщик ресурсов был развернут, перейдите в группу ресурсов и выберите Показать скрытые типы.

Снимок экрана: портал Azure, на котором отображаются скрытые типы ресурсов и ресурсы, развернутые в группе ресурсов.

Чтобы просмотреть развернутый пользовательский ресурс, используйте операцию для вашего типа ресурса GET. Тип Microsoft.CustomProviders/resourceProviders/users ресурса, показанный в ответе JSON, включает ресурс, созданный шаблоном.

GET https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users?api-version=2018-09-01-preview
subID=$(az account show --query id --output tsv)
requestURI="https://management.azure.com/subscriptions/$subID/resourceGroups/$rgName/providers/Microsoft.CustomProviders/resourceProviders/$funcName/users?api-version=2018-09-01-preview"
az rest --method get --uri $requestURI

Вы получите ответ:

{
  "value": [
    {
      "id": "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/ana",
      "name": "ana",
      "properties": {
        "FullName": "Ana Bowman",
        "Location": "Moon",
        "provisioningState": "Succeeded"
      },
      "type": "Microsoft.CustomProviders/resourceProviders/users"
    }
  ]
}

Вызов действия

У вашего пользовательского поставщика ресурсов также есть действие с именем ping. Код, обрабатывающий запрос, реализуется в приложении-функции. Действие ping отвечает приветствием.

Чтобы отправить ping запрос, используйте операцию POST на вашем действии.

POST https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/ping?api-version=2018-09-01-preview
pingURI="https://management.azure.com/subscriptions/$subID/resourceGroups/$rgName/providers/Microsoft.CustomProviders/resourceProviders/$funcName/ping?api-version=2018-09-01-preview"
az rest --method post --uri $pingURI

Вы получите ответ:

{
  "message": "hello <function-name>.azurewebsites.net",
  "pingcontent": {
    "source": "<function-name>.azurewebsites.net"
  }
}

Создание ресурса с помощью PUT

В этом кратком руководстве для развертывания ресурса шаблон использовал тип ресурса Microsoft.CustomProviders/resourceProviders/users. Можно также использовать PUT операцию для создания ресурса. Например, если ресурс не развёрнут с помощью шаблона, операция PUT создаст этот ресурс.

В этом примере, поскольку шаблон уже развернул один ресурс, операция PUT создает новый ресурс.

PUT https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/<resource-name>?api-version=2018-09-01-preview

{"properties":{"FullName": "Test User", "Location": "Earth"}}
addURI="https://management.azure.com/subscriptions/$subID/resourceGroups/$rgName/providers/Microsoft.CustomProviders/resourceProviders/$funcName/users/testuser?api-version=2018-09-01-preview"
az rest --method put --uri $addURI --body "{'properties':{'FullName': 'Test User', 'Location': 'Earth'}}"

Вы получите ответ:

{
  "id": "/subscriptions/<sub-ID>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/testuser",
  "name": "testuser",
  "properties": {
    "FullName": "Test User",
    "Location": "Earth",
    "provisioningState": "Succeeded"
  },
  "type": "Microsoft.CustomProviders/resourceProviders/users"
}

Вы можете повторно запустить GET операцию из представления пользовательского поставщика ресурсов и раздела ресурсов, чтобы отобразить два созданных ресурса. В этом примере показаны выходные данные команды Azure CLI.

{
  "value": [
    {
      "id": "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/ana",
      "name": "ana",
      "properties": {
        "FullName": "Ana Bowman",
        "Location": "Moon",
        "provisioningState": "Succeeded"
      },
      "type": "Microsoft.CustomProviders/resourceProviders/users"
    },
    {
      "id": "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/testuser",
      "name": "testuser",
      "properties": {
        "FullName": "Test User",
        "Location": "Earth",
        "provisioningState": "Succeeded"
      },
      "type": "Microsoft.CustomProviders/resourceProviders/users"
    }
  ]
}

Команды пользовательского поставщика ресурсов

Используйте команды настраиваемых поставщиков для работы с пользовательским поставщиком ресурсов.

Перечисление настраиваемых поставщиков ресурсов

list Используйте команду для отображения всех настраиваемых поставщиков ресурсов в подписке. По умолчанию перечислены настраиваемые поставщики ресурсов текущей подписки или можно указать --subscription параметр. Чтобы получить список для группы ресурсов, используйте параметр --resource-group.

az custom-providers resource-provider list --subscription $subID
[
  {
    "actions": [
      {
        "endpoint": "https://<provider-name>.azurewebsites.net/api/{requestPath}",
        "name": "ping",
        "routingType": "Proxy"
      }
    ],
    "id": "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceproviders/<provider-name>",
    "location": "eastus",
    "name": "<provider-name>",
    "provisioningState": "Succeeded",
    "resourceGroup": "<rg-name>",
    "resourceTypes": [
      {
        "endpoint": "https://<provider-name>.azurewebsites.net/api/{requestPath}",
        "name": "users",
        "routingType": "Proxy, Cache"
      }
    ],
    "tags": {},
    "type": "Microsoft.CustomProviders/resourceproviders",
    "validations": null
  }
]

Отображение свойств

Используйте команду show для отображения свойств настраиваемого провайдера ресурсов. Формат выходных данных похож на формат list выходных данных.

az custom-providers resource-provider show --resource-group $rgName --name $funcName

Создание ресурса

create Используйте команду для создания или обновления пользовательского поставщика ресурсов. В этом примере обновляются actions и resourceTypes.

az custom-providers resource-provider create --resource-group $rgName --name $funcName \
--action name=ping endpoint=https://myTestSite.azurewebsites.net/api/{requestPath} routing_type=Proxy \
--resource-type name=users endpoint=https://myTestSite.azurewebsites.net/api/{requestPath} routing_type="Proxy, Cache"
"actions": [
  {
    "endpoint": "https://myTestSite.azurewebsites.net/api/{requestPath}",
    "name": "ping",
    "routingType": "Proxy"
  }
],

"resourceTypes": [
  {
    "endpoint": "https://myTestSite.azurewebsites.net/api/{requestPath}",
    "name": "users",
    "routingType": "Proxy, Cache"
  }
],

Обновление тегов поставщика

Команда update обновляет только теги для пользовательского поставщика ресурсов. На портале Azure служба приложений пользовательского поставщика ресурсов отображает тег.

az custom-providers resource-provider update --resource-group $rgName --name $funcName --tags new=tag
"tags": {
  "new": "tag"
},

Удаление пользовательского поставщика ресурсов

Команда delete запрашивает у вас подтверждение и удаляет только настраиваемого поставщика ресурсов. Учетная запись хранения, служба приложений и план службы приложений не удаляются. После удаления поставщика вы вернеесь в командную строку.

az custom-providers resource-provider delete --resource-group $rgName --name $funcName

Очистите ресурсы

Если вы закончите работу с ресурсами, созданными в этой статье, можно удалить группу ресурсов. При удалении группы ресурсов все ресурсы в этой группе ресурсов удаляются.

az group delete --resource-group $rgName

Дальнейшие шаги

Общие сведения о пользовательских поставщиках ресурсов см. в следующей статье: