Integración de tablas de Amazon S3 con servicios de análisis de AWS - Amazon Simple Storage Service

Integración de tablas de Amazon S3 con servicios de análisis de AWS

En este tema se cubren los requisitos previos y los procedimientos necesarios para integrar los buckets de tablas de Amazon S3 con los servicios de análisis de AWS. Para obtener información general sobre cómo funciona la integración, consulte Información general de la integración de tablas de S3.

nota

Esta integración utiliza los servicios de AWS Glue y AWS Lake Formation, y puede incurrir en costos de solicitudes y almacenamiento de AWS Glue. Para más información, consulte Precios de AWS Glue.

Se aplican precios adicionales por ejecutar consultas en las tablas de S3. Para obtener más información, consulte la información de precios del motor de consulta que está utilizando.

Requisitos previos para la integración

Se necesitan los siguientes requisitos previos para integrar buckets de tablas con los servicios de análisis de AWS.

importante

Cuando cree tablas, asegúrese de utilizar todas las letras minúsculas en los nombres y las definiciones de las tablas. Por ejemplo, asegúrese de que los nombres de columna estén todos en minúsculas. Si el nombre o la definición de la tabla contiene letras mayúsculas, significa que la tabla no es compatible con AWS Lake Formation ni AWS Glue Data Catalog. En este caso, la tabla no será visible para servicios de análisis de AWS como Amazon Athena, aunque los buckets de tablas estén integrados con servicios de análisis de AWS.

Si la definición de la tabla contiene mayúsculas, recibirá el siguiente mensaje de error al ejecutar una consulta de SELECT en Athena: “GENERIC_INTERNAL_ERROR: Error al obtener la solicitud de tabla: com.amazonaws.services.glue.model.ValidationException: Recurso de federación no compatible: nombres de tabla o columna no válidos”.

Integración de buckets de tablas con servicios de análisis de AWS

Esta integración debe realizarse una vez por región de AWS.

importante

La integración de los servicios de análisis de AWS ahora utiliza la opción WithPrivilegedAccess en la operación registerResource de la API de Lake Formation para registrar buckets de tablas de S3. La integración ahora también crea el catálogo s3tablescatalog en el AWS Glue Data Catalog mediante la opción AllowFullTableExternalDataAccess en la operación CreateCatalog de la API de AWS Glue.

Si configuró la integración con la versión preliminar, podrá seguir utilizando la integración actual. Sin embargo, el proceso de integración actualizado proporciona mejoras en el rendimiento, por lo que recomendamos efectuar la migración. Para migrar a la integración actualizada, consulte Migración al proceso de integración actualizado.

  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3.

  2. En el panel de navegación izquierdo, elija Buckets de tablas.

  3. Elija Crear bucket de tablas.

    Se abrirá la página Crear bucket de tablas.

  4. Introduzca un Nombre de bucket de tablas y asegúrese de que se ha seleccionado la casilla de verificación Habilitar integración.

  5. Elija Crear bucket de tablas. Amazon S3 intentará integrar automáticamente los buckets de tablas en esa región.

La primera vez que integre buckets de tablas en cualquier región, Amazon S3 creará un nuevo rol de servicio de IAM en su nombre. Este rol permite a Lake Formation acceder a todos los buckets de tablas de la cuenta y federar el acceso a las tablas en AWS Glue Data Catalog.

Integración de buckets de tablas con la AWS CLI

Los siguientes pasos muestran cómo utilizar la AWS CLI para integrar buckets de tablas. Para realizar estos comandos, reemplace user input placeholders con su propia información.

  1. Cree un bucket de tablas.

    aws s3tables create-table-bucket \ --region us-east-1 \ --name amzn-s3-demo-table-bucket
  2. Cree un rol de servicio de IAM que permita a Lake Formation acceder a los recursos de tabla.

    1. Cree un archivo llamado Role-Trust-Policy.json que contenga la siguiente política de confianza:

      JSON

      Cree el rol de servicio de IAM con el siguiente comando:

      aws iam create-role \ --role-name S3TablesRoleForLakeFormation \ --assume-role-policy-document file://Role-Trust-Policy.json
    2. Cree un archivo llamado LF-GluePolicy.json que contenga la siguiente política:

      JSON
      { "Version": "2012-10-17", "Statement": [ { "Sid": "LakeFormationPermissionsForS3ListTableBucket", "Effect": "Allow", "Action": [ "s3tables:ListTableBuckets" ], "Resource": [ "*" ] }, { "Sid": "LakeFormationDataAccessPermissionsForS3TableBucket", "Effect": "Allow", "Action": [ "s3tables:CreateTableBucket", "s3tables:GetTableBucket", "s3tables:CreateNamespace", "s3tables:GetNamespace", "s3tables:ListNamespaces", "s3tables:DeleteNamespace", "s3tables:DeleteTableBucket", "s3tables:CreateTable", "s3tables:DeleteTable", "s3tables:GetTable", "s3tables:ListTables", "s3tables:RenameTable", "s3tables:UpdateTableMetadataLocation", "s3tables:GetTableMetadataLocation", "s3tables:GetTableData", "s3tables:PutTableData" ], "Resource": [ "arn:aws:s3tables:us-east-1:111122223333:bucket/*" ] } ] }

      Asocie la política al rol con el siguiente comando:

      aws iam put-role-policy \ --role-name S3TablesRoleForLakeFormation \ --policy-name LakeFormationDataAccessPermissionsForS3TableBucket \ --policy-document file://LF-GluePolicy.json
  3. Cree un archivo llamado input.json que contenga lo siguiente:

    { "ResourceArn": "arn:aws:s3tables:us-east-1:111122223333:bucket/*", "WithFederation": true, "RoleArn": "arn:aws:iam::111122223333:role/S3TablesRoleForLakeFormation" }

    Registre los buckets de tablas con Lake Formation utilizando el siguiente comando:

    aws lakeformation register-resource \ --region us-east-1 \ --with-privileged-access \ --cli-input-json file://input.json
  4. Cree un archivo llamado catalog.json que contenga el siguiente catálogo:

    { "Name": "s3tablescatalog", "CatalogInput": { "FederatedCatalog": { "Identifier": "arn:aws:s3tables:us-east-1:111122223333:bucket/*", "ConnectionName": "aws:s3tables" }, "CreateDatabaseDefaultPermissions":[], "CreateTableDefaultPermissions":[], "AllowFullTableExternalDataAccess": "True" } }

    Cree el catálogo s3tablescatalog utilizando el siguiente comando. La creación del catálogo hace que el AWS Glue Data Catalog se rellene con objetos correspondientes a buckets de tablas, espacios de nombres y tablas.

    aws glue create-catalog \ --region us-east-1 \ --cli-input-json file://catalog.json
  5. Verifique que se ha agregado el catálogo s3tablescatalog en AWS Glue mediante el siguiente comando:

    aws glue get-catalog --catalog-id s3tablescatalog

Se ha actualizado el proceso de integración de los servicios de análisis de AWS. Si ha configurado la integración con la versión preliminar, podrá seguir utilizando la integración actual. Sin embargo, el proceso de integración actualizado proporciona mejoras en el rendimiento, por lo que recomendamos efectuar la migración siguiendo estos pasos. Para obtener más información sobre el proceso de migración o integración, consulte Creating an Amazon S3 Tables catalog in the AWS Glue Data Catalog en la Guía para desarrolladores de AWS Lake Formation.

  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. Para obtener más información sobre cómo crear un administrador de lago de datos, consulte Creación de un administrador de lago de datos en la Guía para desarrolladores de AWS Lake Formation.

  2. Elimine el catálogo de s3tablescatalog haciendo lo siguiente:

    • En el panel de navegación izquierdo, elija Catálogos.

    • Seleccione el botón de opción situado junto al catálogo s3tablescatalog en la lista Catálogos. En el menú Acciones, elija Eliminar.

  3. Para anular el registro de la ubicación de datos del catálogo s3tablescatalog, haga lo siguiente:

    • En el panel de navegación izquierdo, vaya a la sección Administración y seleccione Ubicaciones de los lagos de datos.

    • Seleccione el botón de opción situado junto a la ubicación del lago de datos de s3tablescatalog; por ejemplo, s3://tables:region:account-id:bucket/*.

    • En el menú Acciones, seleccione Eliminar.

    • En el cuadro de diálogo de confirmación que aparece, seleccione Eliminar.

  4. Ahora que ha eliminado el catálogo de s3tablescatalog y la ubicación del lago de datos, puede seguir los pasos para integrar sus buckets de tablas con los servicios de análisis de AWS mediante el proceso de integración actualizado.

nota

Si desea trabajar con tablas cifradas de SSE-KMS en servicios de análisis de AWS integrados, el rol que utilice debe tener permiso para usar la clave de AWS KMS para las operaciones de cifrado. Para obtener más información, consulte Concesión de permisos a las entidades principales de IAM para trabajar con tablas cifradas en servicios de análisis integrados de AWS.

Después de integrar la entidad principal de IAM se le conceden permisos de Lake Formation para acceder a las tablas, si desea permitir que otras entidades principales de IAM accedan a las tablas, debe conceder permisos de Lake Formation en las tablas a esas entidades principales. Para obtener más información, consulte Administración del acceso a una tabla o base de datos con Lake Formation.