-->

Páginas

miércoles, 27 de noviembre de 2019

Genexus: Proveedor Externo de Almacenamiento

Esta entrada muestra un paso a paso para configurar la propiedad Storage Provider en GeneXus v16 u5, utilizando el servicio S3 de Amazon Web Services (aws de aquí en adelante).

Pasos para habilitar S3

Crear la cuenta en aws

Seguramente una de las razones de la popularidad de aws es que la cuenta gratuita da acceso a una gran cantidad de servicios. Existen varios que son gratuitos de por vida y otros que son gratuitos durante 12 meses. La verdad es que la cantidad de servicios disponibles puede desorientar a primera vista, por lo que en entradas posteriores iré detallando mejor los que vaya usando.

Para la creación de la cuenta simplemente se sigue el paso a paso que muestra la página:
  1. Cuenta de correo y contraseña
  2. Tipo de Cuenta (Profesional/Personal)
  3. Información de Pago
  4. Confirmación de Identidad
Crear Cuenta en AWS Información de Contacto Información de Pago Confirme su identidad
En el paso 4 tuve problemas, nunca me llegó el mensaje con el código de verificación por lo que me puse en contacto con soporte técnico vía chat y luego de explicarles el problema me llamaron al número que registré en la confirmación. Luego de algunas preguntas de verificación me ayudaron habilitando la cuenta y el acceso a la consola.

Empezando con S3

La primera vez que se accede al servicio S3 se puede seguir el tutorial Cómo realizar copias de seguridad de archivos en Amazon S3 el cual muestra de forma detallada los pasos a seguir para utilizar el espacio de almacenamiento.

Información S3 en Capa Gratuita
Información de las características gratuitas de S3

Para el uso del ejemplo, se configuró el bucket (contenedor en el que almacena los archivos) de la siguiente forma:

  1. Nombre y Región: el nombre del bucket debe ser único entre todos los nombres de Amazon S3. En la documentación de aws se puede revisar a detalle las consideraciones a tener en cuenta, una de las más importantes es que no se debe colocar . (punto) en el nombre del bucket si se desea que el acceso SSL quede habilitado (lo comprobé con el primer bucket creado).
    En cuanto a la región, es recomendable seleccionar una que se encuentre lo más cerca posible al lugar desde el que se realizarán las peticiones. Guiándome en el Mapa de Cable Submarino, decidí seleccionar São Paulo.

  2. Nombre y Región

  3. Configurar Opciones: En esta sección se definen las características principales del bucket.
    Control de Versiones, si se desea almacenar los cambios de los archivos (no aplica para el caso de uso).
    Registro de acceso al Servidor, es una característica interesante ya que permite tener el registro de las solicitudes realizadas al bucket. Como se van a almacenar archivos blob para visualización en diferentes opciones, puede resultar útil. Tener en cuenta la nota que se encuentra en la documentación con respecto a los costos, habilitar el registro no genera cargos adicionales, pero los archivos generados se totalizan en el uso del almacenamiento.
    El resto de características las dejé sin marcar.


  4. Establecer permisos: la sugerencia es que se deshabilite el acceso público al bucket y luego de crear le bucket se pueden definir los usuarios con acceso. Si no se habilita el acceso público al bucket, el momento de confirmar una transacción con BlobFile se presenta un error en la aplicación.


  5. Revisión: simplemente muestra un resumen de las características del bucket.
Revisión

Crear usuario y habilitar acceso

Para poder hacer uso del almacenamiento de S3 es necesario habilitar un usuario y configurar sus credenciales. Para esto se utiliza el servicio Identity and Access Management (IAM).

Dentro de IAM se accede a la opción usuarios, añadir usuarios y se sigue el asistente.
  1. Ingresamos el nombre de usuario y el tipo de acceso (para el ejemplo Acceso Mediante Programación)
  2. Con la opción Asociar directamente las políticas existentes y buscando S3, se despliegan las opciones de acceso disponibles. Para el ejemplo se seleccionó AmazonS3FullAccess.
  3. Etiquetas, lo dejé en blanco
  4. Revisar, muestra el resumen de los datos del usuario.
  5. Credenciales, en este paso se debe descargar el .csv o copiar el ID de clave de acceso y la Clave de acceso secreta, ya que indica que luego no se puede acceder a esos datos.

 

Configurando GeneXus

La información oficial de GeneXus se la puede revisar en la wiki, ahí se especifican los parámetros propios de cada proveedor. Para el caso de Amazon S3 se deben configurar las siguientes propiedades:

Bucket name pruebagxs3
Folder Name blobS3 (si no existe en el bucket, es creado por la aplicación)
Storage Access Key ID la generada en el último paso del asistente de IAM
Storage Secret Access KEY la generada en el último paso del asistente de IAM
Storage Region South America (São Paulo)
Storage Endpoint Standar

Para probar si todo funciona, definí una transacción llamada Archivo, con id automático, un campo de nombre y el contenido de tipo BlobFile


Luego de hacer un rebuild all y ejecutar la aplicación, se crea un registro al que se le agrega un pdf de 18mb. Se puede comprobar que la tabla sigue con un tamaño de 208KB y al acceder al bucket de S3 se encuentra el directorio creado y el archivo subido.

propiedades de la tabla archivo
Tamaño de la tabla luego de cargar pdf de 18 mb
archivo cargado a S3
Archivo de 18mb cargado a S3

Con esta funcionalidad se libera a la base de datos del almacenamiento de los archivos y se agiliza la presentación de los mismos, ya que las peticiones son realizadas al S3 de Amazon y no al servidor de aplicaciones.

Para conocer de forma general los principales servicios disponibles en aws recomiendo los programas 9 y 17 de Full Stack Podcast (increíble programa sobre desarrollo) y para profundizar en el manejo de S3 (y el resto de servicios) se puede revisar la documentación propia de Amazon.

No hay comentarios:

Publicar un comentario