你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

创建并使用自定义资源提供程序

自定义资源提供程序是 Azure 与终结点之间的协定。 借助自定义资源提供程序,可以在 Azure 中更改工作流。 本教程介绍创建自定义资源提供程序的过程。 如果不熟悉 Azure 自定义资源提供程序,请参阅 Azure 自定义资源提供程序概述

创建自定义资源提供程序

注意

本教程不介绍如何创作终结点。 如果没有 RESTful 终结点,请按 RESTful 终结点创作教程中的说明操作,该教程是当前教程的基础。

创建终结点以后,可以创建自定义资源提供程序,以便在提供程序与终结点之间生成一个协定。 可以通过自定义资源提供程序指定一系列终结点定义:

{
  "name": "myEndpointDefinition",
  "routingType": "Proxy",
  "endpoint": "https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>"
}
属性 必须 说明
name 终结点定义的名称。 Azure 会通过其 API 在“/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders
/resourceProviders/{resourceProviderName}/{endpointDefinitionName}”下公开此名称
routingType 终结点协定类型。 如果未指定值,则值默认为“Proxy”。
endpoint 终结点,可向其路由请求。 此终结点处理响应以及请求的任何附带作用。

endpoint 的值是 Azure 函数应用的触发器 URL。 应该将 <yourapp><funcname><functionkey> 占位符替换为所创建函数应用的值。

定义自定义操作和资源

自定义资源提供程序包含一系列在 actions 和 resourceTypes 属性下建模的终结点定义。 actions 属性映射到由自定义资源提供程序公开的自定义操作,而 resourceTypes 属性是自定义资源。 在本教程中,自定义资源提供程序有一个名为 myCustomAction 的 actions 属性,和一个名为 myCustomResources 的 resourceTypes 属性。

{
  "properties": {
    "actions": [
      {
        "name": "myCustomAction",
        "routingType": "Proxy",
        "endpoint": "https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>"
      }
    ],
    "resourceTypes": [
      {
        "name": "myCustomResources",
        "routingType": "Proxy",
        "endpoint": "https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>"
      }
    ]
  },
  "location": "eastus"
}

部署自定义资源提供程序

备注

必须将 endpoint 值替换为触发器 URL,该 URL 来自在上一教程中创建的函数应用。

可使用 Azure 资源管理器模板来部署以前的自定义资源提供程序:

{
    "$schema": "http://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.CustomProviders/resourceProviders",
            "name": "myCustomProvider",
            "apiVersion": "2018-09-01-preview",
            "location": "eastus",
            "properties": {
                "actions": [
                    {
                        "name": "myCustomAction",
                        "routingType": "Proxy",
                        "endpoint": "https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>"
                    }
                ],
                "resourceTypes": [
                    {
                        "name": "myCustomResources",
                        "routingType": "Proxy",
                        "endpoint": "https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>"
                    }
                ]
            }
        }
    ]
}

使用自定义操作和资源

创建自定义资源提供程序后,即可使用新的 Azure API。 以下几节介绍如何调用和使用自定义资源提供程序。

自定义操作

Azure CLI

注意

必须将 {subscriptionId}{resourceGroupName} 占位符替换为部署自定义资源提供程序的订阅和资源组。

az resource invoke-action --action myCustomAction \
                          --ids /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/myCustomProvider \
                          --request-body
                            '{
                                "hello": "world"
                            }'
参数 必需 说明
action 在自定义资源提供程序中定义的操作的名称。
ids 自定义资源提供程序的资源 ID。
request-body 将要发送到终结点的请求正文。

自定义资源

注意

必须将 {subscriptionId}{resourceGroupName} 占位符替换为部署自定义资源提供程序的订阅和资源组。

创建自定义资源

az resource create --is-full-object \
                   --id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/myCustomProvider/myCustomResources/myTestResourceName1 \
                   --properties
                    '{
                        "location": "eastus",
                        "properties": {
                            "hello" : "world"
                        }
                    }'
参数 必需 说明
is-full-object 指示属性对象是否包含其他选项,例如位置、标记、SKU 或计划。
id 自定义资源的资源 ID。 此 ID 是自定义资源提供程序的资源 ID 的扩展。
properties 将要发送到终结点的请求正文。

删除自定义资源

az resource delete --id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/myCustomProvider/myCustomResources/myTestResourceName1
参数 必需 说明
id 自定义资源的资源 ID。 此 ID 是自定义资源提供程序的资源 ID 的扩展。

检索自定义资源

az resource show --id /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/myCustomProvider/myCustomResources/myTestResourceName1
参数 必需 说明
id 自定义资源的资源 ID。 此 ID 是自定义资源提供程序的资源 ID 的扩展。

备注

部署并使用自定义资源提供程序以后,请记得清理所有创建的资源,包括 Azure 函数应用。

后续步骤

本文介绍了自定义资源提供程序。 有关详细信息,请参阅: