3 ago 2020

Azure Functions 2 – Publicando en Azure

En la anterior entrada del blog realizamos un ejercicio sencillo en el que desarrollamos una simple azure function “disparada” ´por llamada http en la que utilizamos inyección de dependencias. En esta nueva entrada realizaremos la publicación de este ejercicio en Azure

Como pre-requisito necesitamos contar con una suscripción a Azure y, preferiblemente, ya creado un resource group. Para obtener una cuenta en Azure podemos optar por crea una en este link con hasta por 12 meses de ciertos servicios de forma gratuita. 

Con la cuenta ya creada podemos realizar la publicación por medio de Visual Studio, para esto hacemos clic derecho sobre el proyecto que tiene nuestra función y seleccionamos la opción “Publish”. 


Si no hemos realizado previamente ninguna publicación esto nos abrirá un “wizard” en el que crearemos, en primera instancia, nuestro perfil de publicación. En el primer paso seleccionaremos donde vamos a publicar:

 


En este caso dejaremos la opción seleccionada por defecto es decir publicaremos directamente en la “Azure” cloud, y haremos clic en el botón “Next”. 


En el segundo paso se nos solicitará que seleccionamos el tipo de servicio que alojara nuestras funciones. Es importante notar que “Azure function app” se refiere al servicio o recurso dentro de azure capaz de alojar azure functions, podemos pensar en el cómo el espacio que contendrá nuestras funciones. Este servicio puede ejecutarse (tras bambalinas) en Windows, Linux o como una imagen de Docker, o como cuarta opción podemos desplegar directamente en otro servicio, el Azure container Registry (contenedor de imágenes Docker). En este sencillo ejemplo dejaremos seleccionada la opción por defecto, es decir publicaremos en un Azure Function App que se ejecutará en un entorno Windows y hacemos clic en el botón “Next”. 


Si estuviéramos utilizando Visual Studio con credenciales ya asociadas a una cuenta de Azure este tercer paso sería diferente, pero asumamos que vamos a configurar la conexión a Azure por primera vez por lo que hacemos clic en el link “Sign in” (si aún no hemos creado la cuenta podríamos utilizar el link Create your free Azure Account pero en lo personal prefiero llegar aquí ya con la cuenta creada). Se nos mostrara una ventana emergente en la que debemos ingresar las mismas credenciales utilizadas al crear la cuenta en Azure (estas pueden ser diferentes a las credenciales con las que estamos utilizando visual Studio)

 


Una vez ingresadas las credenciales y realizada una correcta conexión con Azure se nos mostrará una pantalla similar a la siguiente: 


En esta se muestra el nombre de nuestra subscripción (o subscripciones en el caso de que tuviésemos varias). Para continuar debemos hacer clic el símbolo “+” cerca de la etiqueta Function Apps, lo cual nos abrirá la ventana en la que configuramos una nueva app. 


Aquí ingresamos el nombre de nuestra Function App (Que no es el nombre de la función en sí, si no del recurso o servicio que la va a contener); seleccionamos la subscripción en la que va se va crear este servicio; seleccionamos o creamos un Resourse Group (Que es un contenedor de recursos, que sirve para organizar de mejor manera recursos afines o que interactúan entre sí); seleccionamos el Plan Type (que tiene que ver con ciertas características y modelos de precio. El Consumption, por ejemplo, es el verdaderamente serveless y el más cómodo en cuenta a precio al menos para pruebas, pero también hay un plan Premuim y un plan Service App estos últimos no son verdaderamente serveless pero permite por ejemplo configurar una VNet para la Azure Function App cosa que no lo permite el plan Consumption) en nuestro ejercicio dejamos el plan Consumption seleccionado. Seguidamente seleccionamos la Location (corresponde a la región geográfica donde se desplegará la Function App, tiene mucha importancia pues la idea es que se encuentre cerca de nuestros usuarios o cerca de otros recursos que podríamos utilizar lo que a su vez podría reducir latencia y costos) y, finalmente, seleccionamos o creamos un Azure Storage donde se almacenara el código de la función que se va a ejecutar, hacemos clic en el botón “Create” lo que creará los recursos en Azure y nos devolverá a la pantalla anterior. 


En esta dejamos seleccionado el checkbox “Run from package file (recommended)” y hacemos clic en el botón “Finish”. Ya hemos creado los recursos necesarios y hemos creado un “perfil” de publicación que recordara nuestras selecciones, pero aún no hemos realizado la publicación. Para esto debemos hacer clic en el botón “Publish” de la siguiente pantalla: 


Por ahora ignoraremos los iconos de “warnning” y efectivamente haremos clic en el botón “Publish” con lo Visual Studio procederá a realizar la publicación de nuestra Azure Function.

Al final de la publicación podemos ir al portal de Azure con el fin de verificar que efectivamente nuestra publicación se realizó. Podemos ubicar nuestro Resource Group y dentro de esta nuestra recién creada Function App 


Al seleccionarla se mostrara una menú a la derecha donde tenemos la opción “Functions“ 


Al seleccionar la opción “Functions” se nos listará todas las funciones contenidas dentro del Azure Function App, en nuestro caso únicamente aparecerá Function1 que es el nombre con el quedó decorado nuestro método run de la azure function. 

Al seleccionar la función se nos mostrará un menú en la parte superior de la sección donde podemos obtener la dirección de nuestra función. 

Hay que notar que el link tiene en su querystring un código incorporado, este se generó automáticamente debido a que seleccionamos el authorization level en “Function”.

Con este url podemos probar nuestra función ahora alojada en la nube de Azure

 

Con esta entrada terminamos este pequeño tutorial de publicación en Azure de una azure function.