Acceso a las tablas de Amazon S3 mediante el punto de conexión Iceberg REST de AWS Glue - Amazon Simple Storage Service

Acceso a las tablas de Amazon S3 mediante el punto de conexión Iceberg REST de AWS Glue

Una vez que los buckets de tablas de S3 estén integrados con el AWS Glue Data Catalog, puede utilizar el punto de conexión Iceberg REST de AWS Glue para conectarse a las tablas de S3 desde clientes compatibles con Apache Iceberg, como PyIceberg o Spark. El punto de conexión Iceberg REST de AWS Glue implementa la especificación OpenAPI del catálogo de Iceberg REST, que proporciona una interfaz estandarizada para interactuar con tablas de Iceberg. Para acceder a las tablas de S3 mediante el punto de conexión, debe configurar los permisos mediante una combinación de políticas de IAM y concesiones de AWS Lake Formation. En las siguientes secciones se explica cómo configurar el acceso, incluida la creación del rol de IAM necesario, la definición de las políticas requeridas y el establecimiento de los permisos de Lake Formation para el acceso de nivel de base de datos y de tabla.

Para obtener instrucciones detalladas sobre el uso de PyIceberg, consulte Access data in Amazon S3 Tables using PyIceberg through the AWS Glue Iceberg REST endpoint.

Crear un rol de IAM para el cliente

Para acceder a tablas a través de puntos de conexión de AWS Glue, debe crear un rol de IAM con permisos para acciones de AWS Glue y de Lake Formation. En este procedimiento se explica cómo crear el rol y configurar sus permisos.

  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación izquierdo, elija Políticas.

  3. Elija Crear una política y seleccione JSON en el editor de políticas.

  4. Agregue la siguiente política insertada que otorgue permisos para acceder a acciones de AWS Glue y de Lake Formation:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "glue:GetCatalog", "glue:GetDatabase", "glue:GetDatabases", "glue:GetTable", "glue:GetTables", "glue:CreateTable", "glue:UpdateTable" ], "Resource": [ "arn:aws:glue:<region>:<account-id>:catalog", "arn:aws:glue:<region>:<account-id>:catalog/s3tablescatalog", "arn:aws:glue:<region>:<account-id>:catalog/s3tablescatalog/<s3_table_bucket_name>", "arn:aws:glue:<region>:<account-id>:table/s3tablescatalog/<s3_table_bucket_name>/<namespace>/*", "arn:aws:glue:<region>:<account-id>:database/s3tablescatalog/<s3_table_bucket_name>/<namespace>" ] }, { "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": "*" } ] }
  5. Después de crear la política, cree un rol de IAM y elija Política de confianza personalizada como Tipo de entidad de confianza.

  6. Ingrese lo siguiente para la Política de confianza personalizada.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<accountid>:role/<Admin_role>" }, "Action": "sts:AssumeRole", "Condition": {} } ] }

Definición del acceso en Lake Formation

Lake Formation proporciona controles de acceso pormenorizados para las tablas de su lago de datos. Cuando integró el bucket de S3 con el AWS Glue Data Catalog, las tablas se registraron automáticamente como recursos en Lake Formation. Para acceder a estas tablas, debe conceder permisos específicos de Lake Formation a su identidad de IAM, además de los permisos de su política de IAM.

Los siguientes pasos explican cómo aplicar controles de acceso de Lake Formation para permitir que el cliente de Iceberg se conecte a sus tablas. Debe iniciar sesión como administrador de lagos de datos para aplicar estos permisos.

Cómo permitir que motores externos accedan a los datos de tablas

En Lake Formation, debe habilitar el acceso completo a las tablas para que los motores externos accedan a los datos. Esto permite que las aplicaciones de terceros obtengan credenciales temporales de Lake Formation cuando se utiliza un rol de IAM que tiene todos los permisos en la tabla solicitada.

Abra la consola de Lake Formation en https://console.aws.amazon.com/lakeformation/.

  1. Abra la consola de Lake Formation en https://console.aws.amazon.com/lakeformation/ e inicie sesión como administrador del lago de datos.

  2. En el panel de navegación, en Administración, seleccione Configuración de integración de aplicaciones.

  3. Seleccione Permitir que motores externos accedan a datos en las ubicaciones de Amazon S3 con acceso total a las tablas. A continuación, elija Guardar.

Concesión de permisos de Lake Formation a los recursos de tabla

A continuación, conceda permisos de Lake Formation al rol de IAM que creó para su cliente compatible con Iceberg. Estos permisos permitirán al rol crear y administrar tablas en su espacio de nombres. Debe proporcionar permisos tanto de nivel de base de datos como de tabla:

Para conceder permisos de base de datos

  1. Abra la consola de AWS Lake Formation en https://console.aws.amazon.com/lakeformation/ e inicie sesión como administrador del lago de datos.

  2. En el panel de navegación, elija Permisos de datos y, a continuación, seleccione Conceder.

  3. En la página Conceder permisos, en Entidades principales, elija Usuarios y roles de IAM y seleccione el rol de IAM que creó para el acceso a Iceberg REST endpoint de AWS Glue.

  4. En Etiquetas LF o recursos de catálogo, elija Recursos de catálogo de datos con nombre.

  5. En Catálogos, elija el catálogo de datos de AWS Glue que se creó para el bucket de tablas. Por ejemplo, <accoundID>:s3tablescatalog/<table-bucket-name>.

  6. En Bases de datos, seleccione mynamespace.

  7. En Permisos de tabla, elija Crear tabla y Describir.

  8. Elija Conceder.

Para conceder permisos de tabla

  1. Abra la consola de AWS Lake Formation en https://console.aws.amazon.com/lakeformation/ e inicie sesión como administrador del lago de datos.

  2. En el panel de navegación, elija Permisos de datos y, a continuación, seleccione Conceder.

  3. En la página Conceder permisos, en Entidades principales, elija Usuarios y roles de IAM y seleccione el rol de IAM que creó para el acceso a Iceberg REST endpoint de AWS Glue.

  4. En Etiquetas LF o recursos de catálogo, elija Recursos de catálogo de datos con nombre.

  5. En Catálogos, elija el catálogo de datos de AWS Glue que se creó para el bucket de tablas. Por ejemplo, <accoundID>:s3tablescatalog/<table-bucket-name>.

  6. En Bases de datos, elija el espacio de nombres del bucket de tablas de S3 que creó.

  7. En Tablas, seleccione TODAS_LAS_TABLAS.

  8. En Permisos de tabla, seleccione Super.

  9. Elija Conceder.

Configuración del entorno para utilizar el punto de conexión

Después de configurar el rol de IAM con los permisos necesarios para el acceso a las tablas, puede usarlo para ejecutar clientes de Iceberg desde su máquina local configurando la AWS CLI con su rol mediante el siguiente comando:

aws sts assume-role --role-arn "arn:aws:iam::<accountid>:role/<glue-irc-role>" --role-session-name <glue-irc-role>

Para acceder a las tablas a través del punto de conexión REST de AWS Glue, debe inicializar un catálogo en su cliente compatible con Iceberg. Esta inicialización requiere especificar propiedades personalizadas, incluidas las propiedades de sigv4, el URI del punto de conexión y la ubicación del almacén. Especifique estas propiedades de la siguiente manera:

  • Propiedades de Sigv4: Sigv4 debe estar habilitado; el nombre de la firma es glue

  • Ubicación del almacén: se trata del bucket de tablas, que se especifica en este formato: <accountid>:s3tablescatalog/<table-bucket-name>

  • URI del punto de conexión: consulte la guía de referencia de puntos de conexión de servicio de AWS Glue para conocer el punto de conexión específico de la región

El siguiente ejemplo muestra cómo inicializar un catálogo de pyIceberg.

rest_catalog = load_catalog( s3tablescatalog, **{ "type": "rest", "warehouse": "<accountid>:s3tablescatalog/<table-bucket-name>", "uri": "https://glue.<region>.amazonaws.com/iceberg", "rest.sigv4-enabled": "true", "rest.signing-name": "glue", "rest.signing-region": region } )

Para obtener información adicional acerca de la implementación del punto de conexión Iceberg REST de AWS Glue, consulte Conexión al catálogo de datos mediante el punto de conexión Iceberg REST de AWS Glue en la Guía del usuario de AWS Glue.