Como consultar Glue Data Catalog entre Cuentas de AWS.

Introducción

Actualmente muchos clientes optan por un esquema multi-cuenta en AWS, en esta forma de trabajo cuando se hacen proyectos de Data & Analytics se vuelve importante optimizar al máximo el uso de recursos y asegurar el acceso a los datos, por eso muchas veces se opta por un Glue Data Catalog completamente centralizado y que pueda ser consultado desde otras cuentas, sin la necesidad de replicar los datos entre ellas.

Anteriormente para acceder a un Glue Data Catalog en un esquema entre cuentas era necesario la implementación de una función lambda que se encargara de hacer esta conectividad como podemos ver en este blog. Sin embargo ahora esta configuración es más sencilla con una nueva funcionalidad para consultar Glue Data Catalog entre cuentas.

Te voy a mostrar cómo hacerlo!

A continuación les muestro nuestra arquitectura objetivo y el paso a paso a desarrollar.

El objetivo es desde la Cuenta A consultar el Glue Data Catalog de la Cuenta B

Es importante garantizar que las que tanto la Cuenta A como la Cuenta B tengan la última versión de Athena, para cambiarla puedes revisar este blog.

En la Cuenta B en la consola de Glue en la parte izquierda debes dar click en Settings.

Click en Settings

Una vez en settings se debe copiar y pegar la política, teniendo en cuenta reemplazar los siguientes valores:

  • ID_CUENTA_A: ID de la cuenta A.
  • ID_CUENTA_B: ID de la cuenta B.
  • Reemplazar los valores de base de datos y la respectiva tabla que queremos consultar.
Click en Save para guardar la política.

La siguiente es la política a utilizar:

{
"Version" : "2012-10-17",
"Statement" : [ {
"Effect" : "Allow",
"Principal" : {
"AWS" : [ "arn:aws:iam::ID_CUENTA_A:root", "arn:aws:iam::ID_CUENTA_A:role/mirole", "arn:aws:iam::ID_CUENTA_A:user/czambrano" ]
},
"Action" : "glue:*",
"Resource" : [ "arn:aws:glue:us-east-1:ID_CUENTA_B:catalog", "arn:aws:glue:us-east-1:ID_CUENTA_B:database/mibasededatos", "arn:aws:glue:us-east-1:ID_CUENTA_B:table/mibasededatos/mitabla" ]
} ]
}

Crear una política IAM y asociarla a nuestro usuario o role que hará la consulta desde la Cuenta A.

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "glue:*",
"Resource": [
"arn:aws:glue:us-east-1:ID_CUENTA_B:catalog",
"arn:aws:glue:us-east-1:ID_CUENTA_B:database/mibasededatos",
"arn:aws:glue:us-east-1:ID_CUENTA_B:table/mibasededatos/mitabla",
]
}
]
}

El Glue Data Catalog se debe crear haciendo una llamada a la API para poder especificar el catálogo de la cuenta B. Para esta creación puedes usar boto3 en un cloud9 haciendo la siguiente llamada

import boto3response = boto3.client('athena')response.create_data_catalog(
Name='crossdc',
Type='GLUE',
Description='mi cross data catalog',
Parameters={
'catalog-id': 'ID_CUENTA_B'
},
)

Una vez ejecutado en Cloud9 estas líneas podemos verificar con un comando de la CLI que haya quedado creado de forma adecuada:

ec2-user:~/environment $ aws athena get-data-catalog --name crossdc
{
"DataCatalog": {
"Type": "GLUE",
"Name": "crossdc",
"Parameters": {
"catalog-id": "ID_CUENTA_B"
},
"Description": "mi cross data catalog"
}
}

En la consola de Athena buscamos en el campo Datasource y ya debemos ver nuestro catálogo creado con Boto3.

Seleccionamos nuestra base de datos y ejecutamos una consulta para verificar:

SELECT * FROM "crossdc"."mibasededatos"."mitabla" limit 10;

Ahora podemos consultar la data de la cuenta B desde la Cuenta A.

Lecciones Aprendidas

1- Si en el paso 5 tienen problemas consultando la data, usualmente puede se problema de permisos en S3, se debe dar acceso desde el bucket origen de los datos (Cuenta B) a los usuario o roles de la Cuenta A que van a consultar la data.

2- Esta configuración permitirá tener multiples cuentas que puedan consultar nuestros datos centralizados sin la necesidad de tener que replicarlos en otras cuentas.

3- Utilizando herramientas de visualización como Quicksight se puede tomar ventaja para graficar los datos de la Cuenta B desde la Cuenta A.

Carlos Zambrano

--

--

--

AWS x10, Tech Director en Globant con más de 7 años de experiencia en AWS.

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Carlos Andres Zambrano Barrera

Carlos Andres Zambrano Barrera

AWS x10, Tech Director en Globant con más de 7 años de experiencia en AWS.

More from Medium

Preface: Master Data of Enterprise System — Directory, Asset Catalog, General Ledger

How to migrate RDS to RDS via DMS

Running fast, from BIG DATA to FAST DATA.

AWS Kinesis Data Streams