Creando un sFTP con Azure Storage. Ficheros en Business Central parte 1 - Business Central

Breaking

domingo, 31 de julio de 2022

Creando un sFTP con Azure Storage. Ficheros en Business Central parte 1

 user: usuario

A estas alturas todos sabemos que manejar ficheros desatendidamente desde Business Central SaaS, esto es, sin que nadie le pulse al botón de cargar el fichero, es muy diferente a cuando trabajamos en un on-premise.  La razón es obvia: el servidor está en la nube y NO tenemos acceso a sus carpetas.

Como podemos leer o guardar ficheros desatendidamente en Business Central.

Para salvar este pequeño problema disponemos de Azure.  Los desarrolladores de Navision de la vieja escuela se tienen que actualizar.  Tienes que adaptarte a los nuevos tiempos.  O te aclimatas o...  Y estos tiempos te llevan a Azure, Power Apps, Power Automate y Power BI.

Azure Storage



Azure Storage es una cuenta de almacenamiento en la nube. Lo más parecido a un disco duro en la nube, con toda la seguridad de Azure (accesos, redundacia, copias de seguridad,...).  Es verdad que tiene costes, pero realmente no es un producto caro.

Aquí os dejo los precios oficiales:


Podéis encontrar la documentación oficial de Azure Storage aquí:


Una cuenta de Azure Storage dispone de cuatro tipos de almacenamiento:

- Blob Storage: Se utiliza para guardar ficheros grandes como puede ser una copia de seguridad de una máquina virtual, un video, pero también imágenes o ficheros de texto.  Se crean contenedores que a su vez almacenan Blob (ficheros)


- File Storage: Nos permite gestionar ficheros en la nube, de forma que podamos usarlo como si fuese una unidad de disco de nuestro equipo on-premise, cumpliendo el protocolo Server Message Block (SMB)

- Queue Storage: Permite almacenar mensajes y acceder a ellos desde cualquier parte mediante llamadas HTTP o HTTPS.  Los mensajes pueden ser de hasta 64Kb.

- Table Storage:  Este servicio permite almacenar datos no estructurados en la nube.

Para trabajar con Business Central, nosotros usaremos Blob Storage, fundamentalmente por tener comandos específicos dentro del lenguaje AL para manejarlos.

Crear una cuenta de almacenamiento como sFTP

Esta funcionalidad, está en preview a día de escribir este post, pero lo que yo he probado funciona perfectamente.

Para crear un sFTP debemos de crear un recurso de cuenta de almacenamiento (Azure Storage) desde el portal de Azure (portal.azure.com)


Rellenaremos los campos que habitualmente nos pide:

Suscripcion:  Suscripción a la que estará vinculado el recurso.

Grupo de recursos:  En que grupo de recursos meteremos esta cuenta.  Esto nos sirve para poder gestionar todos los recursos juntos, por ejemplo borrarlos todos juntos.

Nombre de la cuenta de almacenamiento:  El nombre único que le daremos a nuestra cuenta. Es importante para identificar o poder usar nuestros ficheros mediante http.

Región:  En qué zona almacenaremos nuestro recurso.  Cuanto más cerca esté de nuestros potenciales usuarios, menos latencia (tiempo que tarda en suministrarse el fichero) tendremos.

Rendimiento:  En función de la calidad de servicio, latencia, ... que quieras, puedes elegir standard o premium, pero claro, el precio también afectará.

Redundancia:  Si queremos que se ejecuten copias de seguridad en diferentes zonas geográficas, podemos elegir una opción u otra.





Antes de revisar y crear, lo que haremos será añadir unas características en opciones avanzadas:



Habilitar espacio de nombres jerárquico.  Por simplificar, que podamos crear directorios.

Habilitar SFTP.  Nos permite usar nuestro Blob Storage como un sFTP.


Ahora sí podemos pinchar sobre Revisar y Crear y posteriormente Crear.  Azure comenzará a aprovisionar (crear) el recurso y nos avisará cuando esté listo.

Configurar el Blob Storage - Contenedores

Como hemos comentado anteriormente, de los cuatro tipos de almacenamiento disponibles, usaremos Blob Storage para usarlo como FTP y para acceder desde Business Central.  Por tanto una vez creado el recurso, lo que haremos será crearnos un contenedor para almacenar nuestros ficheros.


Los contenedores son como carpetas donde almacenar la información.  En este caso crearé un contenedor llamado businesscentral.  
  


Como nivel de acceso, le diremos que es privado sin acceso anónimo.  Es decir, que solamente se puede acceder identificándote o bien mediante claves de acceso compartido.

Al pinchar crear, nos agrega el contenedor businesscentral:


Agregando usuarios al sFTP

El siguiente paso, será dar acceso a los diferentes usuarios que nos interesen al servidor de ficheros sFTP.  Para ello localizamos en el menú la opción de SFTP y creamos los usuarios:



El acceso sería por "Contraseña SSH".  Es decir, que necesitamos introducir una contraseña para acceder mediante un cliente sFTP como FileZilla.

En la pestaña de "Permisos del contenedor" nos solicita que indiquemos a que contenedores (carpetas) tendrá acceso y de qué tipo (lectura, escritura,...).  También debemos indicarle la carpeta o contenedor por defecto en Directorio principal.  En nuestro caso businesscentral.


Al pinchar sobre el botón de agregar, nos aparece la clave que usaremos para acceder desde el exterior.  Recuerda guardarla, puesto que no la podremos volver a visualizar:


Una vez que ya tenemos el usuario, lo podremos ver en el listado de usuarios del FTP y podemos ya configurar un cliente sFTP para trabajar con él:


Configurando un cliente de sFTP para acceder a Blob Storage

Terminada la configuración de la cuenta de almacenamiento de Azure, podemos ir a un cliente de sFTP para poder usarlo.  Los datos que debemos suministrar al posible usuario de nuestro FTP serán:

- Protocolo:  El protocolo usado será sFTP

- Servidor:  será el <nombre de la cuenta de almacenamiento>.blob.core.windows.net

En mi ejemplo:   msdyn365bces.blob.core.windows.net

- Usuario: corresponderá a la <cuentaDeAlmacenamiento>.<NombreUsuario>

En mi ejemplo:  msdyn365bces.rcorella

- Contraseña: La contraseña que nos ha generado Azure al crear al usuario.


Configurando esto en nuestro cliente de Ftp FileZilla, ya podemos acceder a la cuenta de almacenamiento y en función de los permisos dados al usuario, crear o leer ficheros:



Con esta primera parte, hemos creado nuestra cuenta de almacenamiento de Azure y la hemos configurado para acceder mediante un cliente de FTP.  En el próximo post, procederemos a acceder desde Business Central a este directorio/contenedor para poder leer o escribir ficheros.  Recuerda que Business Central tiene un almacenamiento de base de datos limitado (a menos que pagues un extra por él) por lo que no es recomendable guardar todos los archivos dentro de tablas en campos blob.

Puedes ver el video aquí:


Y como usarlo en el desarrollo AL aquí:


No hay comentarios: