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

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

重要

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

2026 年,Azure 资源管理器将弃用自定义资源提供程序 (CuRP) 服务。

我们将在 2026 年 10 月 31 日停用该功能。 作为此次弃用过程的一部分,我们将于 2026 年 2 月 24 日进行一次 scream 测试。 2026年7月31日,将阻止自定义资源和资源提供程序的创建、更新、补丁及操作。 只能读取和删除您自己的自定义资源和资源提供者。

我们知道,这种弃用可能会给你和你的团队带来不便。 下面是一些可用于支持现有工作流的潜在 CuRP 替代项。

如果您的 CuRP 场景是这样的:

  • 仅涉及触发终结点而无需持久资源管理,请考虑 部署脚本
  • 若仅涉及触发终结点且无需进行持久资源管理,并且使用 Bicep,请考虑使用 Bicep 扩展
  • 如果解决方案涉及触发多个不同的终结点或服务,请考虑使用 Azure Functions

如有任何问题,请要求Microsoft客户经理通过电子邮件 curpdeprecation@microsoft.com 发送姓名、公司名称、电子邮件联系人和订阅 ID。

Azure 自定义资源提供程序是 Azure 的扩展性平台。 它允许定义可用于丰富默认 Azure 体验的自定义 API。 本文档介绍:

  • 如何生成和部署 Azure 自定义资源提供程序。
  • 如何使用 Azure 自定义资源提供程序扩展现有工作流。
  • 在何处查找入门指南和代码示例。

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

自定义资源提供程序可以执行哪些操作

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

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

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

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

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

自定义资源提供程序是 Azure 与终结点之间的协定列表。 这些协定描述 Azure 应如何与其终结点交互。 资源提供程序的行为类似于代理,负责在其指定的终结点之间转发请求和响应。 资源提供程序可以指定两种类型的协定:资源类型操作。 这些是通过终结点定义启用的。 终结点定义由三个字段组成: 名称routingType终结点

示例终结点:

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

生成自定义资源

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

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

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

Azure 中为上述示例添加的 API:

HttpMethod 示例 URI Description
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 调用。

构建自定义动作

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

带有 操作 的自定义资源提供程序示例:

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

Azure 中为上述示例添加的 API:

HttpMethod 示例 URI Description
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 以获取快速响应!

后续步骤

本文中,您学习了关于自定义资源提供程序的内容。 转到下一篇文章,创建自定义资源提供程序。