Acceso entre cuentas a los catálogos de datos de AWS Glue
Puede utilizar la característica de catálogo de AWS Glue de cuentas cruzadas de Athena para registrar un catálogo AWS Glue desde una cuenta que no sea la suya. Una vez configurados los permisos de IAM necesarios para AWS Glue y registrar el catálogo como un recurso de Athena DataCatalog, puede utilizar Athena para ejecutar consultas entre cuentas. Para obtener información sobre cómo utilizar la consola de Athena para registrar un catálogo de otra cuenta, consulte Registrar un catálogo de datos desde otra cuenta.
Para obtener más información sobre el acceso entre cuentas en AWS Glue,consulte Concesión de acceso entre cuentas en la Guía para desarrolladores de AWS Glue.
Antes de comenzar
Debido a que esta característica utiliza API y funciones de recursos DataCatalog
de Athena existentes para habilitar el acceso entre cuentas, le recomendamos que lea los siguientes recursos antes de comenzar:
-
Conexión con orígenes de datos: contiene temas sobre el uso de Athena con fuentes del catálogo de datos de AWS Glue, Hive o Lambda.
-
Políticas de catálogos de datos de ejemplo: muestra cómo escribir políticas que controlan el acceso a catálogos de datos.
-
Uso de la AWS CLI con metastores de Hive: muestra cómo utilizar la AWS CLI con metaalmacenes de Hive, pero contiene casos de uso aplicables a otras fuentes de datos.
Consideraciones y limitaciones
Actualmente, el acceso al catálogo AWS Glue entre cuentas de Athena tiene las siguientes limitaciones:
-
La característica está disponible únicamente en las Regiones de AWS en las que se admite la versión 2 o una versión posterior del motor Athena. Para obtener más información acerca de las versiones de motor Athena, consulte Control de versiones del motor Athena. Para actualizar la versión del motor de un grupo de trabajo, consulte Cambio de las versiones del motor Athena.
-
Cuando registra en su cuenta el AWS Glue Data Catalog de otra cuenta, crea un recurso
DataCatalog
regional que está vinculado a los datos de la otra cuenta en esa región en particular solamente. -
En la actualidad, las instrucciones
CREATE VIEW
que incluyen un catálogo AWS Glue entre cuentas no son compatibles. -
Los catálogos cifrados con claves administradas por AWS no se pueden consultar en todas las cuentas. Si desea consultar catálogos en todas las cuentas, utilice claves administradas por el cliente (
KMS_CMK
). Para obtener más información sobre las diferencias entre las claves administradas por el cliente y las claves administradas por AWS, consulte Claves del cliente y claves de AWS en la Guía para desarrolladores de AWS Key Management Service.
Introducción
En el siguiente escenario, la cuenta “Prestatario” (666666666666) quiere ejecutar una consulta SELECT
que hace referencia al catálogo AWS Glue que pertenece a la cuenta “Propietario” (999999999999), como en el siguiente ejemplo:
SELECT * FROM ownerCatalog.tpch1000.customer
En el siguiente procedimiento, los pasos 1a y 1b muestran cómo concederle acceso de la cuenta del prestatario a los recursos de AWS Glue de la cuenta del propietario, tanto desde la perspectiva del propietario como desde la perspectiva del prestatario. El ejemplo concede acceso a la base de datos tpch1000
y la tabla customer
. Cambie estos nombres de ejemplo para adaptarlos a sus necesidades.
Paso 1a: creación un rol de prestatario con una política para acceder a los recursos de AWS Glue del propietario
Para crear un rol de cuenta del prestatario con una política para acceder a los recursos de AWS Glue de la cuenta del propietario, puede utilizar la consola de AWS Identity and Access Management (IAM) o la API de IAM. El siguiente procedimiento utiliza la consola de IAM.
Cómo crear un rol de prestatario y una política para acceder a los recursos de AWS Glue de la cuenta del propietario
-
Inicie sesión en la consola de IAM en https://console.aws.amazon.com/iam/
desde la cuenta del prestatario. -
En el panel de navegación, amplíe Administración de acceso y, a continuación, seleccione Políticas.
-
Elija Crear política.
-
En el editor de políticas, seleccione JSON.
-
En el editor de políticas, ingrese la siguiente política y, a continuación, modifíquela de acuerdo con sus requisitos:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "glue:*", "Resource": [ "arn:aws:glue:
us-east-1
:999999999999
:catalog", "arn:aws:glue:us-east-1
:999999999999
:database/tpch1000
", "arn:aws:glue:us-east-1
:999999999999
:table/tpch1000
/customer
" ] } ] } -
Elija Siguiente.
-
En la página Revisar y crear, en Nombre de la política, ingrese un nombre para la política, (por ejemplo,
CrossGluePolicyForBorrowerRole
). -
Elija Crear política.
-
Seleccione Roles en el panel de navegación.
-
Elija Crear rol.
-
En la página Seleccionar entidad de confianza elija Cuenta de AWS, y luego Siguiente.
-
En la página Añadir permisos, escriba el nombre de la política que creó en el cuadro de búsqueda (por ejemplo,
CrossGluePolicyForBorrowerRole
). -
Elija la casilla de verificación situada junto al nombre de la política y, a continuación, elija Siguiente.
-
En la página Name, review, and create (Nombrar, revisar y crear), en Role name (Nombre del rol), ingrese un nombre para el rol (por ejemplo,
CrossGlueBorrowerRole
). -
Elija Crear rol.
Paso 1b: creación de una política de propietario para concederle acceso a AWS Glue al prestatario
Para conceder acceso a AWS Glue desde la cuenta del propietario (999999999999) al rol de prestatario, puede utilizar la consola de AWS Glue o la operación de la API PutResourcePolicy de AWS Glue. El siguiente procedimiento utiliza la consola de AWS Glue.
Para conceder acceso a AWS Glue a la cuenta de prestatario desde el propietario
-
Inicie sesión en la consola de AWS Glue en https://console.aws.amazon.com/glue/
desde la cuenta del propietario. -
En el panel de navegación, amplíe Catálogo de datos y, a continuación, elija Configuración del catálogo.
-
En el navegador Permissions (Permisos), ingrese una política como la siguiente. Para
rolename
, introduzca el rol que el prestatario creó en el paso 1a (por ejemplo,CrossGlueBorrowerRole
). Si desea aumentar el alcance de los permisos, puede utilizar el carácter comodín*
para los tipos de recursos de base de datos y tabla.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
666666666666
:user/username
", "arn:aws:iam::666666666666
:role/rolename
" ] }, "Action": "glue:*", "Resource": [ "arn:aws:glue:us-east-1
:999999999999
:catalog", "arn:aws:glue:us-east-1
:999999999999
:database/tpch1000
", "arn:aws:glue:us-east-1
:999999999999
:table/tpch1000
/customer
" ] } ] }
Después de terminar, se recomienda que utilice la API de AWS Glue para realizar algunas llamadas de prueba entre cuentas y confirmar que los permisos están configurados de la manera esperada.
Paso 2: El prestatario registra la AWS Glue Data Catalog que pertenece a la cuenta de propietario
El siguiente procedimiento muestra cómo utilizar la consola de Athena para configurar la AWS Glue Data Catalog en la cuenta de Amazon Web Services del propietario como origen de datos. Para obtener información sobre el uso de operaciones de API en lugar de la consola para registrar el catálogo, consulte Uso de la API para registrar un catálogo de datos de Athena que pertenece a la cuenta del propietario.
Para registrar una AWS Glue Data Catalog que pertenece a otra cuenta
Abra la consola de Athena en https://console.aws.amazon.com/athena/
. Si el panel de navegación de la consola no está visible, elija el menú de expansión de la izquierda.
-
Amplíe Administración y, a continuación, elija Orígenes de datos.
-
En la parte superior derecha de la consola, seleccione Create data source (Crear origen de datos).
-
En la página Elegir un origen de datos, para Orígenes de datos, seleccione S3: AWS Glue Data Catalog y, a continuación, elija Siguiente.
-
En la página Introducir detalles del origen de datos, en la sección AWS Glue Data Catalog, para Elegir un AWS Glue Data Catalog, elija AWS Glue Data Catalog en otra cuenta.
-
En Dataset details (Detalles del origen de datos), ingrese la siguiente información:
-
Data source name (Nombre del origen de datos): ingrese el nombre que desea utilizar en las consultas SQL para hacer referencia al catálogo de datos de la otra cuenta.
-
Descripción: (opcional) ingrese una descripción del catálogo de datos en la otra cuenta.
-
ID del catálogo: ingrese el ID de cuenta de Amazon Web Services de 12 dígitos de la cuenta a la que pertenece el catálogo de datos. El ID de cuenta de Amazon Web Services es el ID del catálogo.
-
-
(Opcional) Amplíe Etiquetas y luego ingrese los pares clave-valor que quiera asociar con el origen de datos. Para obtener más información acerca de las etiquetas, consulte Etiquetado de recursos de Athena.
-
Elija Siguiente.
-
En la página Review and create (Revisar y crear), revise la información que ha proporcionado y, a continuación, elija Create data source (Crear un origen de datos). En la página Data source details (Detalles de origen de datos) se enumeran las bases de datos y etiquetas del catálogo de datos que ha registrado.
-
Elija Edit Data Source (Editar origen de datos). El catálogo de datos que ha registrado se muestra en la columna Data source name (Nombre de origen de datos).
-
Para ver o editar información sobre el nuevo catálogo de datos, elija el catálogo y, a continuación, elija Actions (Acciones) y Edit (Editar).
-
Para eliminar el nuevo catálogo de datos, elija el catálogo y, a continuación, elija Actions (Acciones) y Delete (Eliminar).
Paso 3: El prestatario envía una consulta
El prestatario envía una consulta que hace referencia al catálogo mediante la sintaxis catalog
.database
.table
, como en el ejemplo siguiente:
SELECT * FROM ownerCatalog.tpch1000.customer
En lugar de utilizar la sintaxis completa, el prestatario también puede especificar el catálogo según el contexto si lo hace pasar por QueryExecutionContext.
Permisos de Simple Storage Service (Amazon S3) adicionales
-
Si la cuenta del prestatario utiliza una consulta de Athena para escribir nuevos datos en una tabla de la cuenta del propietario, el propietario no tendrá acceso de manera automática a estos datos en Amazon S3, aunque la tabla exista en la cuenta del propietario. Esto se debe a que, a menos que se configure lo contrario, el prestatario es el propietario del objeto de la información en Amazon S3. Para concederle acceso a los datos al propietario, establezca los permisos en los objetos de manera apropiada como paso adicional.
-
Ciertas operaciones de DDL entre cuentas como MSCK REPAIR TABLE requieren permisos de Amazon S3. Por ejemplo, si la cuenta del prestatario está realizando una operación
MSCK REPAIR
entre cuentas contra una tabla de la cuenta del propietario que tiene sus datos en un bucket de S3 de la cuenta de propietario, ese bucket debe concederle permisos al rol asumido por el prestatario para que la consulta se realice de forma correcta.
Para obtener más información acerca de cómo conceder permisos de buckets, consulte ¿Cómo configuro permisos de buckets con ACL? en la Guía del usuario de Amazon Simple Storage Service.
Uso de un catálogo de forma dinámica
En algunos casos, es posible que desee realizar pruebas rápidamente contra un catálogo de AWS Glue entre cuentas sin el paso previo de registrarlo. Puede realizar consultas entre cuentas de forma dinámica sin crear el objeto de recurso DataCatalog
si los permisos necesarios de IAM y Amazon S3 están configurados correctamente como se describió anteriormente en este documento.
Para hacer referencia explícita a un catálogo sin registro, utilice la sintaxis del ejemplo siguiente:
SELECT * FROM "glue:arn:aws:glue:us-east-1:999999999999:catalog".tpch1000.customer
Utilice el formato “glue:
”, donde <arn>
es el ARN de AWS Glue Data Catalog que desea utilizar. En el ejemplo, Athena utiliza esta sintaxis para apuntar dinámicamente al catálogo de datos AWS Glue de la cuenta 999999999999 como si hubiera creado por separado un objeto de <arn>
DataCatalog
para él.
Notas para el uso de catálogos dinámicos
Cuando utilice catálogos dinámicos, recuerde los siguientes puntos.
-
El uso de un catálogo dinámico requiere los permisos de IAM que utiliza normalmente para las operaciones de API de catálogo de datos de Athena. La principal diferencia es que el nombre de recurso del catálogo de datos sigue la convención de nomenclatura de
glue:*
. -
El ARN del catálogo debe pertenecer a la misma región en la que se está ejecutando la consulta.
-
Cuando utilice un catálogo dinámico en una consulta o vista DML, indíquelo con comillas dobles escapadas (
\"
). Cuando utilice un catálogo dinámico en una consulta DDL, indíquelo con acentos graves (`
).
Uso de la API para registrar un catálogo de datos de Athena que pertenece a la cuenta del propietario
En lugar de utilizar la consola de Athena como se describe en el paso 2, se pueden utilizar las operaciones de la API para registrar el catálogo de datos que pertenece a la cuenta del propietario.
El creador del recurso DataCatalog de Athena debe tener los permisos necesarios para ejecutar la operación de la API CreateDataCatalog de Athena. En función de sus requisitos, es posible que sea necesario acceder a operaciones de API adicionales. Para obtener más información, consulte Políticas de catálogos de datos de ejemplo.
El siguiente cuerpo de solicitud de CreateDataCatalog
registra un catálogo de AWS Glue para acceso entre cuentas:
# Example CreateDataCatalog request to register a cross-account Glue catalog: { "Description": "Cross-account Glue catalog", "Name": "ownerCatalog", "Parameters": {"catalog-id" : "999999999999" # Owner's account ID }, "Type": "GLUE" }
El siguiente código de muestra utiliza un cliente Java para crear el objeto DataCatalog
.
# Sample code to create the DataCatalog through Java client CreateDataCatalogRequest request = new CreateDataCatalogRequest() .withName("ownerCatalog") .withType(DataCatalogType.GLUE) .withParameters(ImmutableMap.of("catalog-id", "999999999999")); athenaClient.createDataCatalog(request);
Después de estos pasos, el prestatario debe ver el ownerCatalog
cuando llama a la operación de la API ListDataCatalogs.
Recursos adicionales de
-
Configurar el acceso entre cuentas a un AWS Glue Data Catalog compartido mediante Amazon Athena en los Patrones de recomendaciones de AWS.
-
Consultar un AWS Glue Data Catalog entre cuentas con Amazon Athena
en el Blog de macrodatos de AWS -
Concesión de acceso entre cuentas en la Guía para desarrolladores de AWS Glue