Introducción a la incorporación de recursos de proveedores de recursos personalizados de Azure

La incorporación de recursos de proveedores de recursos personalizados de Azure es un modelo de extensibilidad para los tipos de recursos de Azure. Permite aplicar operaciones o administración en los recursos de Azure existentes a escala. Para más información, consulte Cómo los proveedores de recursos personalizados de Azure pueden ampliar Azure. En este artículo se describe:

  • Qué puede hacer la incorporación de recursos.
  • Conceptos básicos de incorporación de recursos y cómo usarlo.
  • Dónde encontrar guías y ejemplos de código para empezar.

Importante

Los proveedores de recursos personalizados se encuentran actualmente en versión preliminar pública. Esta versión preliminar se ofrece sin un Acuerdo de Nivel de Servicio y no se recomienda para cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan funcionalidades restringidas. Para más información, consulte Términos de uso complementarios para las versiones preliminares de Microsoft Azure.

¿Qué puede hacer la incorporación de recursos?

De forma similar a los recursos personalizados de los proveedores de recursos personalizados de Azure, la incorporación de recursos define un contrato que proxyá las solicitudes de "incorporación" a un punto de conexión. A diferencia de los recursos personalizados, la incorporación de recursos no crea un nuevo tipo de recurso. En su lugar, permite la extensión de los tipos de recursos existentes. Y la incorporación de recursos funciona con Azure Policy, por lo que la administración y la configuración de los recursos se pueden realizar a gran escala. Algunos ejemplos de flujos de trabajo de incorporación de recursos:

  • Instale y administre en extensiones de máquina virtual.
  • Cargue y configure los valores predeterminados en las cuentas de Azure Storage.
  • Habilite la configuración de diagnóstico de línea base a escala.

Conceptos básicos de incorporación de recursos

La incorporación de recursos se configura a través de proveedores de recursos personalizados de Azure mediante microsoft.CustomProviders/resourceProviders y los tipos de recursos Microsoft.CustomProviders/associations. Para habilitar la incorporación de recursos para un proveedor de recursos personalizado, durante el proceso de configuración, cree un resourceType denominado "asociaciones" con un routingType que incluya "Extensión". Microsoft.CustomProviders/associations y Microsoft.CustomProviders/resourceProviders no necesitan pertenecer al mismo grupo de recursos.

Este es un proveedor de recursos personalizado de Azure de ejemplo:

{
  "properties": {
    "resourceTypes": [
      {
        "name": "associations",
        "routingType": "Proxy,Cache,Extension",
        "endpoint": "https://microsoft.com/"
      }
    ]
  },
  "location": "eastus"
}
Propiedad ¿Obligatorio? Description
nombre Nombre de la definición del punto de conexión. Para la incorporación de recursos, el nombre debe ser "asociaciones".
routingType Determina el tipo de contrato con el punto de conexión. Para la incorporación de recursos, los valores de routingType válidos son "Proxy, Cache, Extension" y "Webhook,Cache,Extension".
endpoint El extremo al que se dirigen las solicitudes. Esto controlará la respuesta y los efectos secundarios de la solicitud.

Después de crear el proveedor de recursos personalizado con el tipo de recurso de asociaciones, puede usar Microsoft.CustomProviders/associations. Microsoft.CustomProviders/associations es un recurso de extensión que puede extender cualquier otro recurso de Azure. Cuando se crea una instancia de Microsoft.CustomProviders/associations, tomará una propiedad targetResourceId, que debe ser un identificador de recurso Microsoft.CustomProviders/resourceProviders o Microsoft.Solutions/applications válido. En estos casos, la solicitud se reenviará al tipo de recurso de asociaciones en la instancia microsoft.CustomProviders/resourceProviders que creó.

Nota:

Si se proporciona un identificador de recurso Microsoft.Solutions/applications como targetResourceId, debe haber un microsoft.CustomProviders/resourceProviders implementado en el grupo de recursos administrado con el nombre "public".

Asociación de proveedores de recursos personalizados de Azure de ejemplo:

{
  "properties": {
    "targetResourceId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}",
    ...
  }
}
Propiedad ¿Obligatorio? Description
targetResourceId Identificador de recurso de Microsoft.CustomProviders/resourceProviders o Microsoft.Solutions/applications.

Uso de la incorporación de recursos

La incorporación de recursos funciona mediante la extensión de otros recursos con el recurso de extensión Microsoft.CustomProviders/associations. En el ejemplo siguiente, la solicitud se realiza para una máquina virtual, pero se puede extender cualquier recurso.

En primer lugar, debe crear un recurso de proveedor de recursos personalizado con un tipo de recurso de asociaciones. Esto declarará la dirección URL de devolución de llamada que se usará cuando se cree un recurso Microsoft.CustomProviders/associations correspondiente, que tiene como destino el proveedor de recursos personalizado.

Solicitud de creación de ejemplo 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}"
}

Después de crear el proveedor de recursos personalizado, puede dirigirse a otros recursos y aplicar los efectos secundarios del proveedor de recursos personalizados a ellos.

Ejemplo microsoft.CustomProviders/associations create request:

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"
    }
  }
}

A continuación, esta solicitud se reenviará al punto de conexión especificado en el proveedor de recursos personalizado que creó, al que hace referencia targetResourceId de este modo:

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"
    }
  }
}

El punto de conexión debe responder con una aplicación/json Content-Type y un cuerpo de respuesta JSON válido. Los campos que se devuelven en el objeto properties del JSON se agregarán a la respuesta de devolución de asociación.

Obtener ayuda

Si tiene preguntas sobre el desarrollo de proveedores de recursos personalizados de Azure, pruebe a preguntarles en Stack Overflow. Es posible que ya se haya respondido una pregunta similar, así que compruebe primero antes de publicarla. Agregue la etiqueta azure-custom-providers para obtener una respuesta rápida.

Pasos siguientes

En este artículo, ha obtenido información sobre los proveedores de recursos personalizados. Consulte estos artículos para obtener más información: