

# Acceso a las tablas de Amazon S3 mediante el punto de conexión Iceberg REST de AWS Glue
<a name="s3-tables-integrating-glue-endpoint"></a>

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](https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml), 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](https://aws.amazon.com/blogs/storage/access-data-in-amazon-s3-tables-using-pyiceberg-through-the-aws-glue-iceberg-rest-endpoint/).

**Requisitos previos**
+ [Integrar los buckets de tablas con los servicios de análisis de AWS](s3-tables-integrating-aws.md)
+ [Crear un espacio de nombres de tablas](s3-tables-namespace-create.md)
+ [Tener acceso a una cuenta de administrador de lagos de datos](https://docs.aws.amazon.com//lake-formation/latest/dg/initial-lf-config.html#create-data-lake-admin)

## Crear un rol de IAM para el cliente
<a name="glue-endpoint-create-iam-role"></a>

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/](https://console.aws.amazon.com/iam/).

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

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

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

------
#### [ JSON ]

****  

   ```
   {
       "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:us-east-1:111122223333:catalog",
                   "arn:aws:glue:us-east-1:111122223333:catalog/s3tablescatalog",
                   "arn:aws:glue:us-east-1:111122223333:catalog/s3tablescatalog/amzn-s3-demo-table-bucket",
                   "arn:aws:glue:us-east-1:111122223333:table/s3tablescatalog/amzn-s3-demo-table-bucket/{{<namespace>}}/*",
                   "arn:aws:glue:us-east-1:111122223333:database/s3tablescatalog/amzn-s3-demo-table-bucket/{{<namespace>}}"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "lakeformation:GetDataAccess"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

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

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

------
#### [ JSON ]

****  

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

------

## Definición del acceso en Lake Formation
<a name="define-access-lakeformation"></a>

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
<a name="allow-external-engines"></a>

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/](https://console.aws.amazon.com/lakeformation/).

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

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

1. 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 name="grant-lakeformation-permissions"></a>

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 por base de datos y tabla. Para obtener más información, consulte [Concesión del permiso de Lake Formation sobre una tabla o base de datos](grant-permissions-tables.md#grant-lf-table).

## Configuración del entorno para utilizar el punto de conexión
<a name="setup-client-glue-irc"></a>

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](https://docs.aws.amazon.com/glue/latest/dg/connect-glu-iceberg-rest.html) en la *Guía del usuario de AWS Glue*.