Available since Release 6.0.0
Introduction
This functionality allows a platform administrator user to segment an S3 bucket (either AWS S3 or MinIO) in virtual buckets assigned to different platform users.
In this way, without the need to have different physical buckets, I can use each virtual bucket for a specific topic, having separated its uses (datamart, staging,...).
How to use it?
Required set-up configuration
In order to enable this functionality, it’s necessary to complete some previous steps:
Create a new metastorage service in the CaaS configured for this S3 repository. It’s possible to use the same MinIO image of the plataform. It will be
Creación de un nuevo servicio de metastorage apuntando a este sistema S3. Para esta parte se podrá usar la imagen del propio de plataforma para MinIO. Se generará un nuevo servicio que para AWS llamaremos presto-metastore-server-aws. La imagen, en su versión actual:
presto-metastore-server:5.0.0
Y apuntando a AWS con las variables de entorno, además de la URL del servicio
- MINIO_ROOT_USER → con el Access Key
- MINIO_ROOT_PASSWORD → secret key
- MINIO_SERVER_ENDPOINT → endpoint http/https del servicio S3
Con esto tendremos el servicio corriendo y apuntado a AWS
Configurar el sistema S3 en la configuración centralizada de plataforma. Dentro de la configuración Platform el path onesaitplatform/env/externals3
Aunque con la configuración inicial debería estar apuntando, también será necesario revisar que los paths:
onesaitplatform/env/database/prestodb-externals3-catalog → nombre catalog de presto (por defecto externals3)
onesaitplatform/env/database/prestodb-externals3-schema → nombre catalog de presto (por defecto default)
Crear un nuevo catalog de presto en plataforma (con el nombre indicado en el paso anterior en onesaitplatform/env/database/prestodb-externals3-catalog) apuntando a metastorage creado previamente (propiedad hive.metastorage.url) con las siguientes propiedades:
Creación del Bucket S3 en AWS
Una vez realizados los pasos anteriores y teniendo configurado correctamente las credenciales para AWS, lo primero será acceder a nuestra consola de AWS:
Accederemos a sección de Amazon S3
Y daremos a “crear bucket” para acceder al formulario de creación. Dentro del mismo rellenaremos los diferentes campos y crearemos nuestro bucket:
Al crear el bucket se nos notificará de la creación del mismo y aparecerá en el listado de buckets
Creación del Bucket Virtual asociado en plataforma
A partir de aquí, si vamos a plataforma con un usuario administrador y vamos a la opción Gestión de Buckets Virtuales/Virtual Buckets Management
Damos a crear y podremos ver el listado de buckets de AWS
Seleccionamos el nuevo bucket creado y rellenamos el resto de campos
Al darle a crear, podremos ver el resumen, así como el path completo generado
En este punto, será interesante asignar permisos a los usuarios desarrolladores para que puedan crear entidades sobre este nuevo bucket virtual, es decir que puedan crear entidades sobre la carpeta con el path “data/input” en el bucket de AWS onesaitdatamart
Entity creation in the Virtual Bucket
Finally, we can create the entity in this Virtual Bucket with the authorised user of the previous step.
When we log in we navigate to the virtual bucket list that show us which bucket are allowed to use. With this user we're not allowed to create, edit or delete Virtual Buckets,
In order to create the new entity for this Virtual Bucket, we’ll navigate to the “Create entity in Historical Database“ option:
After that, the Create Entity from Virtual Bucket will appear
Using a similar way to the historical entities, we’ll fill the different options of the form for the entity creation.
Below, we can select the entity location with the Virtual Bucket Identification dropdown. After that, if we update the SQL (with Update SQL button) we’ll see the new SQL sentence with the real bucket location in EXTERNAL_LOCATION attribute.
Finally, if we click on create button, we’ll create our new entity
If we navigate to the AWS Console, we can see how the full path for the new entity has been created
Entity operations
It will be posible to insert data that will appear as a new file in the AWS S3
And query them: