Ejecución manual de una función no desencadenada por HTTP

En este artículo se muestra cómo ejecutar manualmente una función no desencadenada por HTTP a través de una solicitud HTTP con formato especial.

En algunos contextos, por ejemplo, durante el desarrollo y la solución de problemas, es posible que tenga que ejecutar "a petición" una función de Azure que se desencadena indirectamente. Algunos ejemplos de desencadenadores indirectos son las funciones según una programación o las funciones que se ejecutan como el resultado de los eventos.

El procedimiento descrito en este artículo equivale a usar la funcionalidad de Test/Run de la pestaña Código + prueba de una función en Azure Portal. También puede usar Visual Studio Code para ejecutar manualmente funciones.

Requisitos previos

Los ejemplos de este artículo utilizan una herramienta de prueba de HTTP. Asegúrese de elegir una herramienta que mantenga los datos seguros. Para más información, vea Herramientas de prueba HTTP.

Definición de la ubicación de la solicitud

Para ejecutar una función no desencadenada por HTTP, necesita una manera de enviar una solicitud a Azure para que ejecute la función. La dirección URL que se usa para hacer esta solicitud tiene un formato específico.

Definición de la ubicación de la solicitud: nombre de host + ruta de acceso a la carpeta + nombre de la función

  • Nombre de host: La ubicación pública de la aplicación de función que consta del nombre de la aplicación de función más azurewebsites.net o el dominio personalizado. Cuando trabaja con ranuras de implementación que se utilizan para el almacenamiento provisional, la parte del nombre de host es el nombre de host de producción con -<slotname> anexados. En el ejemplo anterior, la URL será myfunctiondemos-staging.azurewebsites.net para una ranura denominada staging.
  • Ruta de acceso de carpeta: para obtener acceso a funciones no desencadenadas por HTTP a través de una solicitud HTTP, debe enviar la solicitud a través de la ruta de acceso admin/functions. Las API de la ruta de acceso de /admin/ solo son accesibles con autorización.
  • Nombre de la función: El nombre de la función que quiere ejecutar.

Las siguientes consideraciones se aplican cuando se realizan solicitudes a los puntos de conexión de administrador en la aplicación de función:

  • Al realizar solicitudes a cualquier punto de conexión en la ruta de acceso de /admin/, debe proporcionar la clave maestra de la aplicación en el encabezado x-functions-key de la solicitud.
  • Cuando se ejecuta localmente, no se aplica la autorización y no se requiere la clave maestra de la función. Puede llamar a la función directamente al omitir el encabezado x-functions-key.
  • Al acceder a los puntos de conexión de la aplicación de función en una ranura de implementación, asegúrese de usar el nombre de host específico de la ranura en la URL de solicitud, junto con la clave maestra específica de la ranura.

Obtener la clave maestra

Puede obtener la clave maestra en Azure Portal o mediante la CLI de Azure.

Precaución

Debido a los permisos elevados de la aplicación de función otorgados por la clave maestra, no debe compartir esta clave con terceros ni distribuirla en una aplicación. La clave solo se debe enviar a un punto de conexión HTTPS.

  1. Vaya a la aplicación de función en Azure Portal, seleccione Claves de la aplicación y, luego, la clave _master.

    Busque la clave maestra que se va a copiar.

  2. En la sección Editar clave, copie el valor de la clave en el portapapeles y, a continuación, seleccione Aceptar.

    Copie la clave maestra en el portapapeles.

Llamada a la función

  1. En Azure Portal, vaya a la aplicación de función y elija su función.

  2. Seleccione Código + prueba y, a continuación, Registros. Cuando ejecute manualmente la función desde su herramienta de prueba HTTP, aquí verá los mensajes de la función registrados.

    Captura de pantalla que muestra la página

  3. En la herramienta de prueba HTTP, use la ubicación de solicitud que definió como la URL de solicitud y asegúrese de que el método de solicitud HTTP es POST e incluya estos dos encabezados de solicitud:

    Key Value
    x-functions-key El valor de clave maestra pegado desde el portapapeles.
    Content-Type application/json
  4. Asegúrese de que la carga útil/cuerpo de la solicitud POST sea { "input": "<TRIGGER_INPUT>" }. El valor de <TRIGGER_INPUT> específico que proporcione dependerá del tipo de desencadenador, pero solo puede ser un valor de cadena, numérico o booleano. En el caso de los servicios que usan cargas JSON como, por ejemplo, Azure Service Bus, la carga JSON de prueba se debe escapar y serializar como una cadena.

    Si no desea pasar datos de entrada a la función, debe pasar un diccionario {} vacío como el cuerpo de la solicitud POST. Para obtener más información, consulte el artículo de referencia del desencadenador no HTTP concreto.

  5. Envíe la solicitud POST HTTP. Si la respuesta debe ser HTTP 202 (Aceptada).

  6. A continuación, vuelva a la función en Azure Portal. Revise los registros y verá los mensajes procedentes de la llamada manual a la función.

    Vea los registros para ver los resultados de la prueba de clave maestra.

La forma en que se accede a los datos enviados al desencadenador depende del tipo de desencadenador y del lenguaje de la función. Para obtener más información, consulte los ejemplos de referencia del desencadenador específico.

Pasos siguientes