你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 自定义资源提供程序资源载入是 Azure 资源类型的扩展性模型。 它允许在现有的 Azure 资源上大规模地应用操作或管理。 有关详细信息,请参阅 Azure 自定义资源提供程序如何扩展 Azure。 本文介绍:
- 资源载入可以执行的作。
- 资源载入基础知识及其用法。
- 在何处查找入门指南和代码示例。
重要
自定义资源提供程序目前以公共预览版提供。 此预览版在提供时没有附带服务级别协议,我们不建议将其用于生产工作负荷。 某些功能可能不受支持,或者可能具有受限功能。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款。
资源载入可以做什么?
与 Azure 自定义资源提供程序自定义资源类似,资源载入定义了一个协定,用于将“载入”请求代理到终结点。 与自定义资源不同,资源载入不会创建新的资源类型。 而是允许扩展现有资源类型。 资源引入与 Azure Policy 一起使用,因此可以大规模管理和配置资源。 资源载入工作流的一些示例:
- 在虚拟机扩展上安装和管理。
- 在 Azure 存储帐户上上传和配置默认值。
- 大规模启用基线诊断设置。
资源载入基础知识
通过使用 Microsoft.CustomProviders/resourceProviders 和 Microsoft.CustomProviders/associations 资源类型,借助 Azure 自定义资源提供程序来配置资源的载入。 在配置过程中,为了使自定义资源提供程序能够引入资源,请创建一个名为“associations”的resourceType,并为其分配一个包含“Extension”的routingType。 Microsoft.CustomProviders/associations 和 Microsoft.CustomProviders/resourceProviders 不需要属于同一资源组。
下面是一个示例 Azure 自定义资源提供程序:
{
"properties": {
"resourceTypes": [
{
"name": "associations",
"routingType": "Proxy,Cache,Extension",
"endpoint": "https://microsoft.com/"
}
]
},
"location": "eastus"
}
| 资产 | Required? | Description |
|---|---|---|
| 姓名 | 是的 | 终结点定义的名称。 对于资源载入,名称必须为“关联”。 |
| routingType | 是的 | 确定与终结点的协定类型。 对于资源载入,有效的 routingTypes 为“Proxy, Cache, Extension”和“Webhook, Cache, Extension”。 |
| 终结点 | 是的 | 要将请求路由到的端点。 这将处理响应以及请求可能产生的任何副作用。 |
使用关联资源类型创建自定义资源提供程序后,可以使用 Microsoft.CustomProviders/associations 为目标。 Microsoft.CustomProviders/associations 是可以扩展任何其他 Azure 资源的扩展资源。 创建 Microsoft.CustomProviders/associations 的实例时,它将采用属性 targetResourceId,该属性应该是有效的 Microsoft.CustomProviders/resourceProviders 或 Microsoft.Solutions/applications 资源 ID。 在这些情况下,请求将被转发到您所创建的 Microsoft.CustomProviders/resourceProviders 实例上的关联资源类型。
注释
如果 Microsoft.Solutions/applications 资源 ID 作为 targetResourceId 提供,则必须在托管资源组中部署名为“public”的 Microsoft.CustomProviders/resourceProviders。
Azure 自定义资源提供程序的关联示例:
{
"properties": {
"targetResourceId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}",
...
}
}
| 资产 | Required? | Description |
|---|---|---|
| targetResourceId | 是的 | Microsoft.CustomProviders/resourceProviders 或 Microsoft.Solutions/applications 的资源 ID。 |
如何使用资源载入
资源载入的工作原理是使用 Microsoft.CustomProviders/associations 扩展资源扩展其他资源。 在以下示例中,对虚拟机发出请求,但可以扩展任何资源。
首先,需要创建一种关联类型的自定义资源提供程序。 这将声明在创建相应的 Microsoft.CustomProviders/associations 资源(面向自定义资源提供程序)时使用的回调 URL。
示例 Microsoft.CustomProviders/resourceProviders 创建请求:
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}?api-version=2018-09-01-preview
Authorization: Bearer eyJ0e...
Content-Type: application/json
{
"properties": {
"resourceTypes": [
{
"name": "associations",
"routingType": "Proxy,Cache,Extension",
"endpoint": "https://{myCustomEndpoint}/"
}
]
},
"location": "{location}"
}
创建自定义资源提供程序后,可以面向其他资源,并对其应用自定义资源提供程序的副作用。
示例 Microsoft.CustomProviders/associations 创建请求:
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{virtualMachineName}/providers/Microsoft.CustomProviders/associations/{associationName}?api-version=2018-09-01-preview
Authorization: Bearer eyJ0e...
Content-Type: application/json
{
"properties": {
"targetResourceId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}",
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3" : "myPropertyValue3"
}
}
}
然后,此请求将转发到在创建的自定义资源提供程序中指定的终结点,此终结点由 targetResourceId 以以下形式引用:
PUT https://{endpointURL}/?api-version=2018-09-01-preview
Content-Type: application/json
X-MS-CustomProviders-RequestPath: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/associations/{associationName}
X-MS-CustomProviders-ExtensionPath: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{virtualMachineName}/providers/Microsoft.CustomProviders/associations/{associationName}
X-MS-CustomProviders-ExtendedResource: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{virtualMachineName}
{
"properties": {
"myProperty1": "myPropertyValue1",
"myProperty2": {
"myProperty3" : "myPropertyValue3"
}
}
}
终结点应使用应用程序/json Content-Type 和有效的 JSON 响应正文进行响应。 JSON 属性 对象下返回的字段将添加到关联返回响应中。
获取帮助
如果对 Azure 自定义资源提供程序开发有疑问,请尝试在 Stack Overflow 上提问。 类似的问题可能已经得到解答,因此请在发布之前先检查。 添加标记 azure-custom-providers 以获取快速响应!
后续步骤
本文中,您学习了关于自定义资源提供程序的内容。 请参阅以下文章了解详细信息: