Ejecución de código a petición con Azure Functions

Completado

Ahora que ha creado una aplicación de funciones, verá cómo compilar, configurar y ejecutar una función. Ejecutaremos nuestra función en el ejercicio siguiente, por lo que no es necesario completar ninguna tarea de esta unidad.

Desencadenadores

Las funciones se basan en eventos, lo que significa que se ejecutan en respuesta a un evento. El tipo de evento que inicia una función se denomina desencadenador. Cada función debe configurarse exactamente con un desencadenador.

La ejecución de funciones se puede desencadenar mediante solicitudes HTTP, un temporizador programado y eventos de los siguientes servicios de Azure:

Servicio de Azure Descripción del desencadenador
Blob Storage Inicia una función cuando se detecta un blob nuevo o actualizado.
Azure Cosmos DB (la base de datos de Azure Cosmos) Inicia una función cuando se detectan inserciones y actualizaciones.
Cuadrícula de Eventos Iniciar una función cuando se recibe un evento de Event Grid.
Event Hubs Inicia una función cuando se recibe un evento de Event Hubs.
Queue Storage Inicia una función cuando se recibe un nuevo elemento en una cola. El mensaje de la cola se proporciona a modo de entrada para la función.
Bus de Servicio Inicia una función en respuesta a los mensajes de una cola de Service Bus.

Enlaces

Un enlace es una manera declarativa de conectar datos y servicios a la función. Los enlaces interactúan con diferentes orígenes de datos, lo que significa que no tiene que escribir código en la función para conectarse a orígenes de datos y administrar las conexiones. La plataforma se encarga de esta compleja tarea en su lugar como parte del código de enlace. Cada enlace tiene una dirección: el código lee los datos de los enlaces de entrada y escribe datos en enlaces de salida . Cada función puede tener o no enlaces para administrar los datos de entrada y salida procesados por la función.

Un desencadenador es un tipo de enlace de entrada que tiene la capacidad de iniciar la ejecución de algún código.

Azure proporciona un gran número de enlaces para conectarse a diferentes servicios de almacenamiento y mensajería.

Definición de un enlace de ejemplo

Veamos un ejemplo de configuración de una función con un enlace de entrada (desencadenador) y un enlace de salida. Supongamos que se quiere escribir una fila nueva en Azure Table Storage cada vez que aparezca un mensaje nuevo en Azure Queue Storage. Este escenario se puede implementar mediante un desencadenador de Azure Queue Storage y un enlace de salida de Azure Table Storage.

El siguiente fragmento de código es el archivo function.json para este escenario.

{
  "bindings": [
    {
      "name": "order",
      "type": "queueTrigger",
      "direction": "in",
      "queueName": "myqueue-items",
      "connection": "MY_STORAGE_ACCT_APP_SETTING"
    },
    {
      "name": "$return",
      "type": "table",
      "direction": "out",
      "tableName": "outTable",
      "connection": "MY_TABLE_STORAGE_ACCT_APP_SETTING"
    }
  ]
}

Nuestra configuración JSON especifica que la función se desencadena cuando se agrega un mensaje a una cola denominada myqueue-items. A continuación, el valor devuelto de nuestra función se escribe en outTable en Azure Table Storage.

En el caso de las funciones de PowerShell, los enlaces de salida se escriben explícitamente con el cmdlet Push-OutputBinding.

Este ejemplo es una ilustración sencilla de cómo se configuran los enlaces para una función. Podríamos cambiar la salida para que sea un correo electrónico mediante un enlace de SendGrid o colocar un evento en un Service Bus para notificar a algún otro componente de nuestra arquitectura. Incluso podríamos tener varios enlaces de salida para insertar datos en varios servicios.

Sugerencia

Para ver y editar el contenido de function.json en Azure Portal, en la página Inicio, seleccione la aplicación de funciones y, en el panel, seleccione Vista JSON. La vista JSON del recurso muestra el identificador del recurso y el código JSON modificable. Para cerrar la vista JSON, seleccione la X en la esquina superior derecha del panel.

No todos los lenguajes admitidos por Functions usan el archivo function.json para definir funciones.

Creación Prueba de una función en Azure Portal

Azure Functions proporciona plantillas de función predefinidas, que se basan en un tipo específico de desencadenador. Estas plantillas, en el lenguaje elegido, facilitan la creación de la primera función.

Este módulo no es compatible con todos los lenguajes admitidos por Functions y el propio portal no admite la creación de funciones en todos los lenguajes admitidos por Functions.

Para los lenguajes admitidos que usan el archivo function.json para definir funciones, puede crear y editar estas funciones directamente en Azure Portal. Estos lenguajes admitidos por el portal incluyen: JavaScript, PowerShell, Python y Script de C# (.csx). Los lenguajes que definen funciones directamente en el propio código se deben desarrollar fuera del portal e implementarse en Azure. Estos lenguajes no admitidos son: C#, Java, Python (modelo de programación v2) y JavaScript/TypeScript (modelo de programación v4 de Node.js).

Plantillas de función

Al crear la primera función en el portal, puede seleccionar un desencadenador predefinido para la función. En función de las selecciones, Azure genera código predeterminado e información de configuración, como la creación de una entrada del registro de eventos cuando se reciben los datos de entrada.

La selección de una plantilla en el panel Agregar función proporciona fácil acceso a los entornos de desarrollo, desencadenadores y dependencias más comunes. Al crear una función en Azure Portal, puede elegir entre más de 20 plantillas. Cuando la haya creado, puede personalizar aún más el código.

Al crear una función a partir de una plantilla, se crean varios archivos, incluido un archivo de configuración, function.jsony un archivo de código fuente, index.js.

Puede crear o editar funciones para la aplicación de funciones seleccionando Funciones en la categoría Funciones en el menú Aplicación de funciones.

Al seleccionar una función que creó en la aplicación de funciones, se abre el panel Función. Al seleccionar Código y prueba en el menú Función, tiene acceso a las acciones de la barra de comandos para probar y ejecutar el código, guardar o descartar los cambios que realice o para obtener la dirección URL publicada. Al seleccionar Probar o ejecutar en la barra de comandos, puede ejecutar casos de uso para las solicitudes que incluyen cadenas y valores de consulta. La ruta de acceso de la función encima del cuadro de código muestra el nombre del archivo que está abierto. Puede seleccionar un archivo específico en la lista desplegable para probar o editar, por ejemplo, function.json.

Captura de pantalla del código de función y el editor de pruebas que muestra la vista Test/Run expandida, con las opciones de menú resaltadas.

En la imagen anterior, el panel tiene pestañas Entrada y salida . Al seleccionar la pestaña Entrada , puede compilar y probar la función agregando parámetros de consulta y proporcionando valores para la cadena de consulta. La pestaña Salida muestra los resultados de la solicitud.

Prueba de la función de Azure

Una vez que cree la función en el portal, le interesará probarla. Existen dos enfoques:

  • Prueba en el portal
  • Ejecutarla manualmente

Prueba en Azure Portal

El portal también proporciona una manera cómoda de probar las funciones. Como se ha descrito anteriormente en la captura de pantalla, puede seleccionar Ejecutar en este panel. Los resultados aparecen automáticamente en la pestaña Salida y el panel Registros se abre para mostrar el estado.

Ejecución manual de la función

Puede iniciar una función si desencadena manualmente el desencadenador configurado. Por ejemplo, si usa un desencadenador HTTP, puede usar estas herramientas de prueba HTTP para iniciar una solicitud HTTP a la dirección URL del punto de conexión de la función:

Precaución

En escenarios en los que tiene datos confidenciales, como credenciales, secretos, tokens de acceso, claves de API y otra información similar, asegúrese de usar una herramienta que proteja los datos. Incluya las características de seguridad necesarias, una herramienta que funciona sin conexión o localmente, no sincroniza los datos con la nube y no requiere que inicie sesión en una cuenta en línea. De este modo, se reduce el riesgo de exponer datos confidenciales al público.

Para obtener el punto de conexión de dirección URL de un desencadenador HTTP, seleccione Obtener dirección URL de función en la página de definición de función del portal.

Panel de supervisión y de Application Insights

La capacidad de registrar las funciones es fundamental durante el desarrollo y en producción. Azure Portal proporciona un panel de supervisión, que puede activar habilitando la integración de Application Insights. En el menú de aplicación de funciones, en Configuración, seleccione Application Insights, despues, seleccione Activar Application Insights y, por último, Aplicar. En el cuadro de diálogo, seleccione . El panel de Application Insights ofrece una forma rápida de visualizar el historial de operaciones de funciones mostrando la marca de tiempo, el código de resultado, la duración y el identificador de la operación rellenados por Application Insights.

Captura de pantalla que muestra el panel de Application Insights de la función HTTP con los resultados de la función, los códigos de estado HTTP correspondientes y los elementos de menú Supervisión resaltados.

Panel de registros de streaming

Después de habilitar Application Insights en Azure Portal, puede agregar instrucciones de registro a la función para la depuración. Los métodos llamados para cada idioma reciben un objeto "registro", que se puede usar para agregar información de registro al panel Registros en el panel Código + Prueba al ejecutar una prueba.

Escriba en los registros del código mediante el método log del objeto context, que se pasa al controlador. En el ejemplo siguiente se escribe en el nivel de registro predeterminado (información):

context.log('Enter your logging statement here');

Escriba en los registros del código mediante el cmdlet Write-Host, como se muestra en el ejemplo siguiente:

Write-Host "Enter your logging statement here"

Errores, fallos, advertencias y anomalías

Puede usar métricas u opciones de la categoría Investigar del menú Función para supervisar el rendimiento, diagnosticar errores o configurar docenas de libros predefinidos para administrar la aplicación de funciones, desde errores de compilación y advertencias en el código hasta estadísticas de uso por rol.