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

Azure 自定义资源提供程序概述

Azure 自定义资源提供程序是 Azure 的扩展性平台。 通过它,可以定义自定义 API 来扩充默认 Azure 体验。 本文档描述了:

  • 如何生成和部署 Azure 自定义资源提供程序。
  • 如何利用 Azure 自定义资源提供程序来扩展现有工作流。
  • 在哪里可以找到入门指南和代码示例。

Azure 自定义资源提供程序的示意图,其中显示了 Azure 资源管理器、自定义资源提供程序和资源之间的关系。

重要

自定义资源提供程序目前为公共预览版。 此预览版在提供时没有附带服务级别协议,不建议将其用于生产工作负荷。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款

自定义资源提供程序有何用途

下面是一些使用 Azure 自定义资源提供程序可以实现的示例:

  • 扩展 Azure 资源管理器 REST API,以包括内部和外部服务。
  • 在现有 Azure 工作流之上启用自定义方案。
  • 自定义 Azure 资源管理器模板控件和效果。

什么是自定义资源提供程序

Azure 自定义资源提供程序是通过在 Azure 与终结点之间创建合同来实现的。 此合同通过新资源 Microsoft.CustomProviders/resourceProviders 定义新资源和操作的列表。 然后,自定义资源提供程序会在 Azure 中公开这些新 API。 Azure 自定义资源提供程序由三部分组成:自定义资源提供程序、终结点和自定义资源。

如何生成自定义资源提供程序

自定义资源提供程序是 Azure 与终结点之间的合同列表。 这些协定描述了 Azure 应如何与其终结点交互。 资源提供程序充当代理,它会向/从指定的终结点转发请求和响应。 资源提供程序可以指定两种类型的合同:resourceTypesactions。 通过终结点定义启用这些合同。 终结点定义由三个字段组成:name、routingType 和 endpoint。

示例终结点:

{
  "name": "{endpointDefinitionName}",
  "routingType": "Proxy",
  "endpoint": "https://{endpointURL}/"
}
属性 必选 说明
name 终结点定义的名称。 Azure 会通过其 API 在“/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/
resourceProviders/{resourceProviderName}/{endpointDefinitionName}”下公开此名称
routingType 确定与终结点的合同类型。 如果未指定,则会默认为 "Proxy"。
endpoint 终结点,可向其路由请求。 此项将处理响应以及请求的任何附带作用。

生成自定义资源

ResourceTypes 描述了添加到 Azure 的新自定义资源。 这些资源公开基本的 RESTful CRUD 方法。 详细了解如何创建自定义资源

包含 resourceTypes 的示例自定义资源提供程序:

{
  "properties": {
    "resourceTypes": [
      {
        "name": "myCustomResources",
        "routingType": "Proxy",
        "endpoint": "https://{endpointURL}/"
      }
    ]
  },
  "location": "eastus"
}

为上面的示例添加到 Azure 的 API:

HttpMethod 示例 URI 说明
PUT /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/
providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/
myCustomResources/{customResourceName}?api-version=2018-09-01-preview
用于新建资源的 Azure REST API 调用。
DELETE /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/
providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/
myCustomResources/{customResourceName}?api-version=2018-09-01-preview
用于删除现有资源的 Azure REST API 调用。
GET /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/
providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/
myCustomResources/{customResourceName}?api-version=2018-09-01-preview
用于检索现有资源的 Azure REST API 调用。
GET /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/
providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/
myCustomResources?api-version=2018-09-01-preview
用于检索现有资源列表的 Azure REST API 调用。

生成自定义操作

Actions 描述了添加到 Azure 的新操作。 这些操作可以在资源提供程序的基础之上公开,也可以嵌套在 resourceType下。 详细了解如何创建自定义操作

包含 actions 的示例自定义资源提供程序:

{
  "properties": {
    "actions": [
      {
        "name": "myCustomAction",
        "routingType": "Proxy",
        "endpoint": "https://{endpointURL}/"
      }
    ]
  },
  "location": "eastus"
}

为上面的示例添加到 Azure 的 API:

HttpMethod 示例 URI 说明
POST /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/
providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/
myCustomAction?api-version=2018-09-01-preview
用于激活操作的 Azure REST API 调用。

寻求帮助

如果你对 Azure 自定义资源提供程序开发有任何疑问,请尝试在 Stack Overflow 上提问。 该论坛上可能已有类似问题的解答,因此,在发贴之前请先查看以往的提问。 添加标记 azure-custom-providers 可以快速得到回复!

后续步骤

本文介绍了自定义资源提供程序。 若要创建自定义资源提供程序,请继续学习下一篇文章。