• 16 Enero 2021
  • Elton Rodriguez
  • Microsoft Azure, Azure Functions, Serverless

Mi primer Azure Functions

Qué es Azure Functions

Hoy vamos a crear Nuestro Primer Azure Functions para informar sobre el Covid19 en Latinoamérica, para esto, vamos a seguir los siguientes pasos:

Crearemos un Grupo de Recursos llamado "Personal" y dentro de este, nombraremos el Fuction App (Aplicación de funciones). En mi caso se llamará "personalfucion.azurewebsites.net", escogeremos la pila de ejecución "Node.js" en su versión 12 dentro de la región que deseen. Ya para finalizar, daremos clic en "Revisar y crear".

Crear un nuevo Azure Fuction desde el portal de Azure

Una vez creado nuestro recurso, se nos apertura el centro de aplicaciones de funciones. En la barra lateral izquierda podremos visualizar nuestra Fuction App creada y 3 opciones que dependen de ella: "Funciones, Proxies y Ranuras". Para esta demostración, daremos clic en el "+" para crear una "Nueva Función".

Creando una nueva función de Azure

En la siguiente ventana, Azure desea saber desde que entorno de desarrollo vamos a crear nuestra Función. Actualmente existen 3 formas: "Desde Visual Studio Code, desde un editor + y desde el mismo portal de Azure". Para esta demo, seleccionaremos la última opción "En el portal" y daremos clic en "Continuar".

Entorno de desarrollo para Azure Functions

En la siguiente ventana, Azure desea saber desde que tipo de función deseamos crear. Actualmente existen 3 tipos: Webhook y API, Temporizador, o desde una plantilla predeterminada. En este caso, seleccionaremos la primera opción "Webhook y API" porque lo que realizaremos es recibir una solicitud HTTP, procesarla y retornar un resultado. Finalmente daremos clic en "Crear"

Creando una función de Azure Functions

¡Y listo! Ya tenemos una función creada con una plantilla de ejemplo. Esta función lo que realiza es recibir un texto y responder con un "Hola + {El texto enviado}".

Ejemplo de un Azure Functions

Ahora probemos, daremos clic en "Obtener la dirección URL de la función", la copiaremos y la pegaremos en nuestro navegador

URL de la función

Nos daremos cuenta de que nos responde un status 400, pero como no le enviamos valores, nos responde con una respuesta personalizada que configuramos. Esto se debe a que, si nos percatamos en la URL, esta termina con == dando a entender que falta un dato por enviarle.

Prueba de una función de Azure Functions

Entonces, vamos a agregar la variable de tipo texto que está esperando nuestra función, para ello, al final de la URL añadiremos "&name=Elton" y volveremos a cargar la página.

Prueba exitosa de una función de Azure Functions

¿Acabamos de ver magia? ¡Nooo! solo fue un pequeño código trabajando desde el lado del servidor. Ahora, subiremos el nivel personalizado la función. Para ello, primero necesito que borres TODO lo que está dentro del módulo asíncrono, pero dejando las variables de context y req. Esto debe quedarte así:

Azure Fuction con NodeJS en blanco

Dentro, vamos a crear una condición. Aquí solo estamos comprobando que. si la variable req es enviada como un texto, nos mostrará el mensaje de "Cuenta con pruebas Covid", de lo contrario, si solo recibe un null mostrará el mensaje de "No hay datos sobre el Covid".

Azure Fuction con condiciones

Bien, ahora vamos más allá. Dentro de la condición, crearemos un switch/case donde podremos colocar mucha más información adicional. En mi caso, estoy colocando como casos los nombres de los países de Latinoamérica, y como resultado, estoy enviando un valor tipo tabla con información de casos positivos y fallecidos.

A continuación, te dejo el código listo.

Copiar el código

                                
    module.exports = async function (context, req) {
    
        if(req.query.pais){
            let resultado;
                switch(req.query.pais.toLowerCase()){
                    case 'peru':
                    resultado = {'Casos Positivos': '20 400',
                            'Fallecidos': '600'};
                    break;

                    case 'colombia':
                    resultado = {'Casos Positivos': '6 400',
                            'Fallecidos': '100'};
                    break;

                    case 'ecuador':
                    resultado = {'Casos Positivos': '1 400',
                            'Fallecidos': '50'};
                    break;

                    default:
                    resultado = {'Error': 'No tenemos información del pais'};
                }               
                context.res = {
                body: JSON.stringify({'Título': 'La información sobre el Covid19 en '
                    + (req.query.pais) + ' es:', 'result': resultado})
            };
        }
        else{
            context.res = {
                body: JSON.stringify({'Error': 'Tienes que indicar un pais'})
            };
        }
    };
                                
                            

¡Y listo! No te olvides que al "Obtener la dirección URL de la función", al final debes agregar los países que hemos registrado en los casos. Finalmente, como a manera de ejemplo, podrías añadir "&pais=Peru" después del == en la URL.

En conclusión, algunos de los beneficios de utilizar Azure Functions dentro de nuestras aplicaciones son:

  • ¡No tenemos que preocuparnos por la infraestructura!
  • Está orientado para todos los programadores en C#, F#, Node.js, Java o PHP.
  • Contamos con varios tipos de Triggers, como: HTTP, Timer, CosmosBD, Blob, Queue y EventHub.

¿Qué te pareció ésta entrada?



Ayuda a otros compartiendo esta entrada en: