Acceso entre cuentas a los catálogos de datos de AWS Glue - Amazon Athena

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Acceso entre cuentas a los catálogos de datos de AWS Glue

Puede utilizar la función de catálogo multicuenta de Athena para registrar un AWS Glue AWS Glue catálogo desde una cuenta que no sea la suya. Tras configurar los permisos de IAM necesarios AWS Glue y registrar el catálogo como un recurso de DataCatalogAthena, 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 Registro de un AWS Glue Data Catalog de otra cuenta.

Para obtener más información sobre el acceso multicuenta AWS Glue, consulte Otorgar el acceso multicuenta en la Guía para desarrolladores.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:

Consideraciones y limitaciones

Actualmente, el acceso al AWS Glue catálogo multicuenta de Athena tiene las siguientes limitaciones:

  • La función solo está disponible en los países en los que Regiones de AWS se admite la versión 2 o 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.

  • Al registrar otra cuenta AWS Glue Data Catalog en su cuenta, crea un DataCatalog recurso regional que está vinculado a los datos de la otra cuenta únicamente en esa región en particular.

  • 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 AWS administradas no se pueden consultar en todas las cuentas. En el caso de los catálogos que desee consultar en todas las cuentas, utilice claves gestionadas por el cliente () KMS_CMK en su lugar. Para obtener información sobre las diferencias entre las claves administradas por el cliente y las claves AWS administradas, consulta las claves y AWS claves del cliente en la Guía para AWS Key Management Service desarrolladores.

Introducción

En el siguiente escenario, la cuenta del «prestatario» (6666) quiere ejecutar una SELECT consulta que haga referencia al AWS Glue catálogo que pertenece a la cuenta del «propietario» (del préstamo, 9999), como en el ejemplo siguiente:

SELECT * FROM ownerCatalog.tpch1000.customer

En el siguiente procedimiento, los pasos 1a y 1b muestran cómo dar acceso a la cuenta del prestatario a los AWS Glue recursos de la cuenta del propietario, tanto por parte del prestatario como del propietario. 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: Cree un rol de prestatario con una política para acceder a los recursos del propietario AWS Glue

Para crear un rol de cuenta de prestatario con una política de acceso a los AWS Glue recursos de la cuenta propietaria, puedes usar la consola AWS Identity and Access Management (IAM) o la API de IAM. El siguiente procedimiento utiliza la consola de IAM.

Para crear un rol y una política de prestatario para acceder a los recursos de la cuenta del propietario AWS Glue
  1. Inicie sesión en la consola de IAM en https://console.aws.amazon.com/iam/ desde la cuenta del prestatario.

  2. En el panel de navegación, amplíe Administración de acceso y, a continuación, seleccione Políticas.

  3. Elija Crear política.

  4. En el editor de políticas, seleccione JSON.

  5. En el editor de políticas, introduzca la siguiente política y, a continuación, modifíquela según 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" ] } ] }
  6. Elija Siguiente.

  7. En la página Revisar y crear, en Nombre de la política, introduzca un nombre para la política (por ejemplo,CrossGluePolicyForBorrowerRole).

  8. Elija Crear política.

  9. Seleccione Roles en el panel de navegación.

  10. Elija Crear rol.

  11. En la página Seleccionar entidad de confianza, elija y Cuenta de AWS, a continuación, elija Siguiente.

  12. En la página Añadir permisos, introduzca el nombre de la política que creó en el cuadro de búsqueda (por ejemplo,CrossGluePolicyForBorrowerRole).

  13. Seleccione la casilla de verificación situada junto al nombre de la política y, a continuación, seleccione Siguiente.

  14. 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).

  15. Seleccione Crear rol.

Paso 1b: Crea una política de propietario para conceder el AWS Glue acceso al prestatario

Para conceder AWS Glue acceso desde la cuenta del propietario (379 9999) al rol del prestatario, puede utilizar la AWS Glue consola o la operación de la API. AWS Glue PutResourcePolicy En el siguiente procedimiento, se utiliza la AWS Glue consola.

Para conceder AWS Glue acceso al propietario a la cuenta del prestatario
  1. Inicia sesión en la AWS Glue consola en https://console.aws.amazon.com/glue/ desde la cuenta del propietario.

  2. En el panel de navegación, amplíe Catálogo de datos y, a continuación, elija Configuración del catálogo.

  3. En el navegador Permissions (Permisos), ingrese una política como la siguiente. Para el nombre de la función, introduzca la función 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" ] } ] }

Cuando termines, te recomendamos que utilices la AWS Glue API para realizar algunas llamadas de prueba entre cuentas a fin de confirmar que los permisos están configurados como esperabas.

Paso 2: El prestatario registra lo AWS Glue Data Catalog que pertenece a la cuenta del propietario

El procedimiento siguiente 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 pertenencia a otra cuenta
  1. Abra la consola de Athena en https://console.aws.amazon.com/athena/.

  2. Si el panel de navegación de la consola no está visible, elija el menú de expansión de la izquierda.

    
                            Elija el menú de expansión.
  3. Amplíe Administración y, a continuación, elija Orígenes de datos.

  4. En la parte superior derecha de la consola, seleccione Create data source (Crear origen de datos).

  5. En la página Elegir una fuente de datos, en Fuentes de datos, seleccione S3 - y AWS Glue Data Catalog, a continuación, elija Siguiente.

  6. 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.

  7. 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.

  8. (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.

  9. Elija Siguiente.

  10. 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.

  11. 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).

  12. 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).

  13. 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 utilizando el catálogo. base de datos. sintaxis de tabla, como en el siguiente ejemplo:

SELECT * FROM ownerCatalog.tpch1000.customer

En lugar de utilizar la sintaxis completa, el prestatario también puede especificar el catálogo contextualmente pasándolo a través de. 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 automáticamente a estos datos en Amazon S3, aunque la tabla exista en la cuenta del propietario. Esto se debe a que el prestatario es el propietario del objeto de la información en Amazon S3, a menos que se configure de otro modo. Para conceder al propietario el acceso a los datos, configure los permisos de los objetos en consecuencia 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 realiza una MSCK REPAIR operación entre cuentas con una tabla de la cuenta del propietario que tiene sus datos en un segmento S3 de la cuenta del propietario, ese grupo debe conceder permisos a la función que ha asumido el prestatario para que la consulta se realice correctamente.

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:<arn>”, donde <arn> es el ARN de AWS Glue Data Catalog que desea utilizar. En el ejemplo, Athena usa esta sintaxis para apuntar dinámicamente al catálogo de AWS Glue datos de la cuenta 66669999 como si hubiera creado un DataCatalog objeto para él por separado.

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 DataCatalogrecurso de Athena debe tener los permisos necesarios para ejecutar la operación de la API de CreateDataCatalogAthena. 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 organismo de CreateDataCatalog solicitud registra un AWS Glue catálogo para el 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);

Tras estos pasos, el prestatario debería ver ownerCatalog cuándo llama a la operación de la ListDataCatalogsAPI.

Véase también