Inicio rápido: Creación de un proveedor de recursos personalizados de Azure e implementación de recursos personalizados

En este inicio rápido, creará un proveedor de recursos personalizado e implementará distintos recursos personalizados para dicho proveedor de recursos. Para más información sobre los proveedores de recursos personalizados, consulte Información general sobre proveedores de recursos personalizados de Azure.

Prerrequisitos

Prepare el entorno para la CLI de Azure.

Los ejemplos de la CLI de Azure usan az rest para las solicitudes de REST. Para más información, consulte az rest.

Implementación de un proveedor de recursos personalizados

Para configurar el proveedor de recursos personalizado, implemente una plantilla de ejemplo en su suscripción de Azure.

La plantilla implementa los siguientes recursos en la suscripción:

  • Aplicación de funciones con las operaciones para los recursos y las acciones.
  • Cuenta de almacenamiento para almacenar los usuarios que se crean mediante el proveedor de recursos personalizado.
  • Proveedor de recursos personalizado que define las acciones y los tipos de recursos personalizados. Usa el punto de conexión de la aplicación de función para enviar las solicitudes.
  • Recurso personalizado del proveedor de recursos personalizado.

Para implementar el proveedor de recursos personalizado, use la CLI de Azure, PowerShell o Azure Portal.

En este ejemplo se le pide que especifique un grupo de recursos, la ubicación y el nombre de la aplicación de función del proveedor. Los nombres se almacenan en variables que se usan en otros comandos. Los comandos az group create y az deployment group create implementan los recursos.

read -p "Enter a resource group name:" rgName &&
read -p "Enter the location (i.e. eastus):" location &&
read -p "Enter the provider's function app name:" funcName &&
templateUri="https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/custom-providers/customprovider.json" &&
az group create --name $rgName --location "$location" &&
az deployment group create --resource-group $rgName --template-uri $templateUri --parameters funcName=$funcName &&
echo "Press [ENTER] to continue ..." &&
read

Para implementar la plantilla desde Azure Portal, seleccione el botón Implementar en Azure.

Button to deploy the Resource Manager template to Azure.

Ver recurso y proveedor de recursos personalizado

En el portal, el proveedor de recursos personalizado es un tipo de recurso oculto. Para confirmar que se implementó el proveedor de recursos, vaya al grupo de recursos y seleccione Mostrar tipos ocultos.

Screenshot of Azure portal displaying hidden resource types and resources deployed in a resource group.

Para ver el recurso personalizado que ha implementado, use la operación GET en el tipo de recurso. El tipo de recurso Microsoft.CustomProviders/resourceProviders/users que se muestra en la respuesta JSON incluye el recurso creado por la plantilla.

GET https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users?api-version=2018-09-01-preview
subID=$(az account show --query id --output tsv)
requestURI="https://management.azure.com/subscriptions/$subID/resourceGroups/$rgName/providers/Microsoft.CustomProviders/resourceProviders/$funcName/users?api-version=2018-09-01-preview"
az rest --method get --uri $requestURI

Recibirá la respuesta:

{
  "value": [
    {
      "id": "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/ana",
      "name": "ana",
      "properties": {
        "FullName": "Ana Bowman",
        "Location": "Moon",
        "provisioningState": "Succeeded"
      },
      "type": "Microsoft.CustomProviders/resourceProviders/users"
    }
  ]
}

Acción llamar

El proveedor de recursos personalizado también tiene una acción denominada ping. El código que procesa la solicitud se implementa en la aplicación de función. La acción ping responde con un saludo.

Para enviar una solicitud ping, use la operación POST en la acción.

POST https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/ping?api-version=2018-09-01-preview
pingURI="https://management.azure.com/subscriptions/$subID/resourceGroups/$rgName/providers/Microsoft.CustomProviders/resourceProviders/$funcName/ping?api-version=2018-09-01-preview"
az rest --method post --uri $pingURI

Recibirá la respuesta:

{
  "message": "hello <function-name>.azurewebsites.net",
  "pingcontent": {
    "source": "<function-name>.azurewebsites.net"
  }
}

Use PUT para crear un recurso

En este inicio rápido, la plantilla usó el tipo de recurso Microsoft.CustomProviders/resourceProviders/users para implementar un recurso. También puede usar una operación PUT para crear un recurso. Por ejemplo, si un recurso no se implementa con la plantilla, la operación PUT creará un recurso.

En este ejemplo, dado que la plantilla ya ha implementado un recurso, la operación PUT crea un nuevo recurso.

PUT https://management.azure.com/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/<resource-name>?api-version=2018-09-01-preview

{"properties":{"FullName": "Test User", "Location": "Earth"}}
addURI="https://management.azure.com/subscriptions/$subID/resourceGroups/$rgName/providers/Microsoft.CustomProviders/resourceProviders/$funcName/users/testuser?api-version=2018-09-01-preview"
az rest --method put --uri $addURI --body "{'properties':{'FullName': 'Test User', 'Location': 'Earth'}}"

Recibirá la respuesta:

{
  "id": "/subscriptions/<sub-ID>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/testuser",
  "name": "testuser",
  "properties": {
    "FullName": "Test User",
    "Location": "Earth",
    "provisioningState": "Succeeded"
  },
  "type": "Microsoft.CustomProviders/resourceProviders/users"
}

Puede volver a ejecutar la operación GET desde la sección ver el proveedor de recursos personalizado y el recurso para mostrar los dos recursos que se crearon. En este ejemplo se muestra la salida del comando de la CLI de Azure.

{
  "value": [
    {
      "id": "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/ana",
      "name": "ana",
      "properties": {
        "FullName": "Ana Bowman",
        "Location": "Moon",
        "provisioningState": "Succeeded"
      },
      "type": "Microsoft.CustomProviders/resourceProviders/users"
    },
    {
      "id": "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceProviders/<provider-name>/users/testuser",
      "name": "testuser",
      "properties": {
        "FullName": "Test User",
        "Location": "Earth",
        "provisioningState": "Succeeded"
      },
      "type": "Microsoft.CustomProviders/resourceProviders/users"
    }
  ]
}

Comandos del proveedor de recursos personalizado

Use los comandos custom-providers para trabajar con el proveedor de recursos personalizado.

Enumeración de los proveedores de recursos personalizados

Use el comando list para mostrar todos los proveedores de recursos personalizados en una suscripción. De forma predeterminada, se enumeran los proveedores de recursos personalizados de la suscripción actual, o puede especificar el parámetro --subscription. Para enumerar un grupo de recursos, use el parámetro --resource-group.

az custom-providers resource-provider list --subscription $subID
[
  {
    "actions": [
      {
        "endpoint": "https://<provider-name>.azurewebsites.net/api/{requestPath}",
        "name": "ping",
        "routingType": "Proxy"
      }
    ],
    "id": "/subscriptions/<sub-id>/resourceGroups/<rg-name>/providers/Microsoft.CustomProviders/resourceproviders/<provider-name>",
    "location": "eastus",
    "name": "<provider-name>",
    "provisioningState": "Succeeded",
    "resourceGroup": "<rg-name>",
    "resourceTypes": [
      {
        "endpoint": "https://<provider-name>.azurewebsites.net/api/{requestPath}",
        "name": "users",
        "routingType": "Proxy, Cache"
      }
    ],
    "tags": {},
    "type": "Microsoft.CustomProviders/resourceproviders",
    "validations": null
  }
]

Presentación de las propiedades

Use el comando show para mostrar las propiedades del proveedor de recursos personalizado. El formato de salida es similar a la salida de list.

az custom-providers resource-provider show --resource-group $rgName --name $funcName

Crear un nuevo recurso

Use el comando create para crear o actualizar un proveedor de recursos personalizado. En este ejemplo se actualizan actions y resourceTypes.

az custom-providers resource-provider create --resource-group $rgName --name $funcName \
--action name=ping endpoint=https://myTestSite.azurewebsites.net/api/{requestPath} routing_type=Proxy \
--resource-type name=users endpoint=https://myTestSite.azurewebsites.net/api/{requestPath} routing_type="Proxy, Cache"
"actions": [
  {
    "endpoint": "https://myTestSite.azurewebsites.net/api/{requestPath}",
    "name": "ping",
    "routingType": "Proxy"
  }
],

"resourceTypes": [
  {
    "endpoint": "https://myTestSite.azurewebsites.net/api/{requestPath}",
    "name": "users",
    "routingType": "Proxy, Cache"
  }
],

Actualización de las etiquetas del proveedor

El comando update solo actualiza las etiquetas de un proveedor de recursos personalizado. En Azure Portal, el servicio de aplicaciones del proveedor de recursos personalizado muestra la etiqueta.

az custom-providers resource-provider update --resource-group $rgName --name $funcName --tags new=tag
"tags": {
  "new": "tag"
},

Eliminación de un proveedor de recursos personalizado

El comando delete le avisa y elimina solo el proveedor de recursos personalizado. No se eliminan la cuenta de almacenamiento, el servicio de aplicaciones y el plan del servicio de aplicaciones. Una vez eliminado el proveedor, regresa a un símbolo del sistema.

az custom-providers resource-provider delete --resource-group $rgName --name $funcName

Limpieza de recursos

Cuando haya terminado con los recursos creados en este artículo, puede eliminar el grupo de recursos. Al eliminar un grupo de recursos, se eliminan todos los recursos que contiene.

az group delete --resource-group $rgName

Pasos siguientes

En el siguiente artículo puede encontrar una introducción a los proveedores de recursos personalizados: