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.

En el ejemplo siguiente se usa Postman, pero puede usar cURL, Fiddler o cualquier otra herramienta similar para enviar solicitudes HTTP.

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.

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.

Define the request location: host name + folder path + function name

  • 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.

    Locate the master key to copy.

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

    Copy the master key to the clipboard.

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 Postman, aquí verá los mensajes de la función registrados.

    Screenshot that shows the 'Code + Test' page with a message from the logs displayed.

  3. Abra Postman (o una herramienta de redacción HTTP equivalente) y escriba la ubicación de la solicitud en el cuadro de texto de URL.

  4. Asegúrese de que el método HTTP esté establecido en POST, seleccione la pestaña Encabezados y agregue estos dos pares clave-valor de encabezado:

    Key Value
    x-functions-key El valor de clave maestra pegado desde el portapapeles.
    Content-Type application/json

    Postman headers settings.

  5. Seleccione la pestaña Cuerpo y escriba { "input": "<TRIGGER_INPUT>" } como cuerpo de la solicitud.

    Postman body settings.

    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.

  6. Seleccione Enviar.

    Send a request with Postman.

    Postman luego notifica un estado de 202 - Aceptado.

  7. 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.

    View the logs to see the master key test results.

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