Краткое руководство. Создание поставщика настраиваемых ресурсов Azure и развертывание настраиваемых ресурсов

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

Необходимые компоненты

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

  • Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см . в кратком руководстве по Bash в Azure Cloud Shell.

  • Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.

    • Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.

    • Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.

    • Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.

В примерах 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".

Button to deploy the Resource Manager template to Azure.

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

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

Screenshot of Azure portal displaying hidden resource types and resources deployed in a resource group.

Чтобы просмотреть развернутый пользовательский ресурс, используйте операцию с типом 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"
    }
  ]
}

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

Для работы с настраиваемым поставщиком ресурсов используйте команды custom-providers.

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

Команда 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

Следующие шаги

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