Hello World con Azure Functions
En esta entrada voy a tratar de mostrar, para los más iniciados, como crear rápidamente una Azure Function tipo «Hello World» desde el portal de Azure.
En concreto, se tratará del típico ejemplo que nos permitirá romper el cascarón.
Lo primero que tendremos que hacer es acudir al portal de Azure y obviamente, voy a partir de la base de que tienes una subscripción de Azure válida.
Sino es así, intenta crear una cuenta de Azure.
Una vez en el portal, haremos clic sobre el icono de creación de un nuevo recurso de Azure (New).
En la ventana emergente que aparece, seleccionaremos el grupo Compute y dentro de él, Function App.
A continuación, aparecerá una ventana dentro de la cual deberemos agregar los datos que consideremos oportunos para crear nuestra Azure Function.
En concreto, el nombre de la App, la subscripción que queremos utilizar para la Azure Funcion, el Resource Group (uno existente o uno nuevo), si queremos que se ejecute sobre Windows o Linux, el plan para hospedar nuestra Azure Function, la localización geográfica de la misma y el almacenamiento que queremos utilizar.
Una vez hecho estos cambios, pulsaremos el botón Create.
Se iniciará el proceso de despliegue de nuestra Azure Function.
Una vez finalice este proceso, aparecerá una ventana emergente en el portal que nos indicará que todo está listo.
Pulsaremos sobre el botón Go to resource para abrir la ventana de gestión de nuestra Azure Function.
Para comprobar que nuestra Azure Function está funcionando, podemos acudir a la URL general de la misma:
https://geeksazurefunction.azurewebsites.net/
Dentro de la ventana de gestión de nuestra Azure Function, y para abrir boca, iremos al grupo denominado Functions y pulsaremos el botón + que aparecerá al poner el puntero del ratón sobre esa opción.
Se mostrará una ventana para crear una función dentro de Azure Function.
Aquí, utilizaremos una plantilla existente, para lo cual seleccionaremos la opción Webhook + API, seleccionando como lenguaje de desarrollo (en mi caso) C#.
Una vez confirmados estos detalles, haremos clic sobre el botón Create this function.
Se creará un trigger y un fichero de nombre run.csx.
El contenido C# de nuestra Azure Function es el que se indica a continuación (y corresponde con la plantilla general de una Azure Function tipo Hello World):
using System.Net; public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log) { log.Info("C# HTTP trigger function processed a request."); // parse query parameter string name = req.GetQueryNameValuePairs() .FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0) .Value; // Get request body dynamic data = await req.Content.ReadAsAsync<object>(); // Set name to query string or body data name = name ?? data?.name; return name == null ? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body") : req.CreateResponse(HttpStatusCode.OK, "Hello " + name); }
Ahora sólo nos queda ejecutar nuestra Azure Function.
Esto lo podemos hacer pulsando el botón Run directamente, o acudiendo a la URL de nuestra Azure Function.
Para ejecutarla desde el botón Run, basta con pulsarlo y desplegar el Log en la parte inferior para comprobar el resultado que obtenemos.
Para obtener la URL de nuestra Azure Function, haremos clic sobre la opción Get function URL que aparece en la parte superior derecha:
En la ventana emergente, desplegaremos de la lista de claves la que indica default y pulsaremos el botón Copy para copiar en el portapapeles el contenido de la URL que es lo que nos interesa.
En mi caso:
https://geeksazurefunction.azurewebsites.net/api/HttpTriggerCSharp1?code=r8Guva8xaYso59bob26Mn4pX3YdxeptWTmoVyf58ZXri1K81ImJxdA==
Luego, en la URL, agregaremos un parámetro que será el parámetro name con un valor (en principio el que queramos), como por ejemplo:
https://geeksazurefunction.azurewebsites.net/api/HttpTriggerCSharp1?code=r8Guva8xaYso59bob26Mn4pX3YdxeptWTmoVyf58ZXri1K81ImJxdA==&name=Geeks.ms
Abriremos un navegador Web y escribiremos esta URL y veremos qué ocurre.
Si vamos al log de nuestra Azure Function, veremos que allí se está volcando información relativa a la ejecución de nuestra Azure Function, y que ésta está en funcionamiento tal y como esperábamos.
Lo que también vemos aquí, es que la respuesta es un XML.
Si estás acostumbrado a trabajar con documentos JSON, comentarte que las Azure Functions está preparado para devolver JSON también, pero esto lo veremos en próximas entradas en este blog.
¡Happy Coding!