Ejecución de código a petición con Azure Functions
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 | Inicia una función cuando se detectan inserciones y actualizaciones. |
Event Grid | 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. |
Service Bus | 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 datos desde los enlaces de entrada y escribe datos en los 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 servicios de mensajería y almacenamiento diferentes.
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 fragmento de código siguiente 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"
}
]
}
La configuración de JSON especifica que la función se desencadene cuando se agregue un mensaje a una cola denominada myqueue-items. Después, el valor devuelto de la función se escribe en outTable, en el almacenamiento de tablas de Azure.
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 derecho, elija 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 de 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 un acceso sencillo a los entornos de desarrollo, los desencadenadores y las 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.
Navegación a la función y sus archivos
Al crear una función a partir de una plantilla, se crean varios archivos, incluido un archivo de configuración, function.json y un archivo de código fuente, index.js.
Puede crear o editar las funciones para la aplicación de funciones seleccionando Funciones en la categoría Funciones en el menú de la 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 realizados u obtener la dirección URL publicada. Al seleccionar Test/Run (Probar o ejecutar) en la barra de comandos, puede ejecutar casos de uso para las solicitudes que incluyen valores y cadenas 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.
En la imagen anterior, el panel de la derecha tiene las pestañas Entrada y Salida. Al seleccionar la pestaña Entrada, puede compilar y probar la función agregando parámetros de consulta y suministrando valores para la cadena de consulta. La pestaña Salida muestra los resultados de la compilación.
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 antes, en la captura de pantalla anterior. Al 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 una de estas herramientas de prueba HTTP para iniciar una solicitud HTTP a la dirección URL del punto de conexión de la función:
- Visual Studio Code con una extensión de Visual Studio Marketplace
- Invoke-RestMethod de PowerShell
- Microsoft Edge: herramienta de consola de red
- Bruno
- curl
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 con las características de seguridad necesarias, funcione sin conexión o localmente, no sincronice los datos en la nube y no requiera 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, luego seleccione Activar Application Insights y, por último, Aplicar. En el cuadro de diálogo, seleccione Sí. 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.
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. A los métodos llamados en cada lenguaje se les pasa un objeto de "registro" que se puede usar para agregar información de registro en el panel Registros del panel Code + Test (Código y 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.