你当前正在访问 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 函数应用。
后续步骤
本文介绍了自定义资源提供程序。 有关详细信息,请参阅: