View a markdown version of this page

Exportación de metadatos a Tablas de S3 (versión preliminar) - AWS Glue

Exportación de metadatos a Tablas de S3 (versión preliminar)

nota

La exportación de metadatos del catálogo está disponible como característica en versión preliminar. Esta característica está sujeta a cambios antes de su disponibilidad general.

Descripción general

Puede exportar sus metadatos de AWS Glue Data Catalog a tablas del sistema de catálogo administrado almacenadas en Tablas de Amazon S3. Cuando activa la exportación de Tablas de S3, los metadatos técnicos y empresariales se almacenan en tablas de Apache Iceberg de solo lectura en el bucket de tablas aws-catalog administrado de AWS, lo que permite consultarlas mediante SQL con los servicios de análisis de AWS como Amazon Redshift y Amazon EMR.

Dentro del bucket de tablas aws-catalog, las tablas del sistema se encuentran en los siguientes espacios de nombres:

  • glue: contiene tables y table_columns.

  • catalog_metadata: contiene glossaries, glossary_terms, associated_glossary_terms, attachments y item_attachments.

Actualmente, se admiten las siguientes tablas del sistema:

Tabla del sistema Contiene

tables

Metadatos técnicos y empresariales de cada tabla del Catálogo de datos, como su nombre, base de datos, descripción, ubicación de almacenamiento y formato.

table_columns

Las columnas de cada tabla del catálogo, incluidos el nombre de cada columna, el tipo de datos, la descripción y si se trata de una clave de partición.

glossaries

Los glosarios empresariales de su catálogo, incluidos el nombre, la descripción y el estado de cada glosario.

glossary_terms

Los términos definidos en sus glosarios, incluidos el nombre, las descripciones, el glosario principal y el estado de cada término.

associated_glossary_terms

Las asociaciones entre los términos del glosario y los activos, incluidos el identificador de activo y el identificador de término del glosario.

attachments

Los metadatos de formulario personalizado se adjuntan a nivel de activo, incluidos el tipo de formulario y el contenido del archivo adjunto.

item_attachments

Metadatos de formulario personalizado adjuntos a los elementos de un activo, como columnas individuales, incluidos el nombre del formulario iterable, el nombre del elemento, el tipo de formulario y el contenido del adjunto.

Para ver el esquema completo de las columnas de cada tabla, consulte Referencia de las tablas del sistema del catálogo.

Funcionamiento de la exportación de metadatos del catálogo

Una vez activada la exportación, el Catálogo de datos realiza un relleno único de los metadatos del catálogo existente y, a continuación, mantiene las tablas del sistema actualizadas a medida que se realizan cambios. Los metadatos recién escritos o actualizados suelen estar visibles en las tablas del sistema en unos 5 minutos.

Las tablas del sistema se encuentran en los espacios de nombres glue y catalog_metadata del bucket de tablas aws-catalog. Una tabla del sistema determinada aparece la primera vez que hay metadatos de ese tipo en el catálogo. Por ejemplo, si activa la exportación y el catálogo solo contiene tablas y bases de datos, solo verá las tablas del sistema relacionadas con las tablas. Las tablas del sistema de glosarios aparecen después de crear el primer glosario.

Activación de la exportación de metadatos del catálogo mediante la AWS CLI

La exportación de metadatos del catálogo es una configuración específica de la cuenta. Puede activarla o desactivarla con la AWS CLI.

Requisitos previos

La identidad de IAM que utilice debe tener permiso para llamar a las operaciones de configuración de exportación glue:PutDataCatalogExportConfiguration y glue:GetDataCatalogExportConfiguration, además de s3tables:CreateTable. Para obtener más información sobre los permisos de Tablas de S3, consulte Creación de tablas en buckets de tablas de S3 en la Guía del usuario de Amazon Simple Storage Service.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:PutDataCatalogExportConfiguration", "glue:GetDataCatalogExportConfiguration" ], "Resource": "*" } ] }

Todos los datos de Tablas de S3, incluidos los metadatos del Catálogo de datos, se cifran con el cifrado SSE-S3 de forma predeterminada. Puede optar por cifrar la exportación del catálogo con claves de AWS KMS (SSE-KMS). Si elige cifrar la exportación con claves de AWS KMS, debe seguir estos pasos para agregar permisos adicionales:

  1. Conceda a la entidad principal del servicio de exportación del Catálogo de datos y a la entidad principal del servicio de mantenimiento de Tablas de S3 permisos para usar su clave de KMS (política de claves).

  2. Conceda a la entidad principal de IAM que ejecuta la exportación los permisos para usar la clave de KMS (política de identidad).

Concesión de permisos para usar su clave de KMS (política de claves) a la entidad principal del servicio de exportación del Catálogo de datos y a la entidad principal del servicio de mantenimiento de Tablas de S3

Para permitir que AWS Glue exporte metadatos de catálogo cifrados y para permitir el mantenimiento automático de las tablas, como la compactación y la eliminación de archivos no referenciados en las tablas exportadas, debe conceder acceso a la clave de KMS a las siguientes entidades principales del servicio:

  • systemtables.catalog.amazonaws.com: exporta los metadatos del catálogo cifrados a Tablas de S3.

  • maintenance.s3tables.amazonaws.com: realiza el mantenimiento automático de las tablas exportadas.

AWS Glue escribe en el bucket de tablas administrado de AWS denominado aws-catalog. No es necesario que la clave de KMS utilizada para cifrar la exportación de Tablas de S3 sea la misma que se utilizó para cifrar el Catálogo de datos en reposo. AWS Glue solo admite claves de KMS simétricas. Para conceder acceso a estas entidades principales de servicio, puede utilizar la siguiente política de claves de ejemplo. En esta política, a la entidad principal del servicio maintenance.s3tables.amazonaws.com se le concede permiso para usar una clave de KMS específica para cifrar y descifrar las tablas del bucket de tablas aws-catalog. Para obtener más información sobre la entidad principal de servicio de mantenimiento de Tablas de S3, consulte Requisitos de permiso para el cifrado SSE-KMS de Tablas de S3 en la Guía del usuario de Amazon Simple Storage Service.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSystemTablesDescribeKey", "Effect": "Allow", "Principal": { "Service": "systemtables.catalog.amazonaws.com" }, "Action": [ "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" } } }, { "Sid": "AllowSystemTablesEncryptDecrypt", "Effect": "Allow", "Principal": { "Service": "systemtables.catalog.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3tables:us-east-1:123456789012:bucket/aws-catalog/table/*", "kms:ViaService": "s3.us-east-1.amazonaws.com" } } }, { "Sid": "AllowS3TablesMaintenanceEncryptDecrypt", "Effect": "Allow", "Principal": { "Service": "maintenance.s3tables.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3tables:us-east-1:123456789012:bucket/aws-catalog/*" } } } ] }

Permisos de IAM necesarios para que la entidad principal pueda exportar

Conceda a las entidades principales que ejecutan las exportaciones los siguientes permisos. La siguiente política concede a la entidad principal de IAM el acceso para descifrar un AWS Glue Data Catalog específico, en función del contexto de cifrado de glue_catalog_id (el valor es su catalogId).

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDescribeKey", "Effect": "Allow", "Action": [ "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" } } }, { "Sid": "AllowExportOfGlueDataCatalogByCatalogId", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012", "kms:EncryptionContext:glue_catalog_id": "123456789012" } } } ] }

Activación de la exportación de metadatos del catálogo

  1. Ejecute el siguiente comando para activar la exportación:

    aws glue put-data-catalog-export-configuration \ --export-setting ENABLED
  2. Confirme la configuración ejecutando el siguiente comando:

    aws glue get-data-catalog-export-configuration

    Respuesta de ejemplo:

    { "ExportSetting": "ENABLED", "Status": "ENABLED", "S3TableBucketArn": "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-catalog" }

    El campo Status pasa de ENABLING a ENABLED a medida que avanza el relleno inicial.

Desactivación de la exportación de metadatos del catálogo

Use el siguiente comando:

aws glue put-data-catalog-export-configuration \ --export-setting DISABLED

Referencia de las tablas del sistema del catálogo

Todas las tablas del sistema se encuentran en los espacios de nombres glue o catalog_metadata del bucket de tablas aws-catalog. Cada tabla incluye las siguientes columnas del sistema:

Columna Tipo Descripción

ingestion_time

marca de tiempo

Hora a la que se ingirió el registro en la tabla del sistema (UTC).

schema_version

cadena

Identificador de versión del esquema de la tabla.

tablas

Contiene una fila por tabla de catálogo.

Columna Tipo Descripción

id

cadena

Identificador único de la tabla.

catalog_id

cadena

Identificador del catálogo.

catalog_name

cadena

Nombre del catálogo.

update_time

marca de tiempo

Marca temporal de la última actualización.

created_time

marca de tiempo

Marca temporal de la creación.

created_by_id

cadena

Identificador de la entidad principal que creó la tabla.

created_by_type

cadena

Tipo de la entidad principal creadora.

description

cadena

Descripción de la tabla.

name

cadena

Nombre de la tabla.

namespace

cadena

Espacio de nombres de la tabla.

region_name

cadena

Región de AWS.

tags

mapa<cadena, cadena>

Etiquetas de recursos.

type

cadena

Tipo de activo.

updated_by_id

cadena

Identificador de la entidad principal que actualizó la tabla por última vez.

updated_by_type

cadena

Tipo de la entidad principal que hizo la actualización.

database_name

cadena

Base de datos que contiene la tabla.

input_format

cadena

Clase de formato de entrada.

lake_formation_registration

cadena

Estado de registro en AWS Lake Formation.

output_format

cadena

Clase de formato de salida.

owner

cadena

Propietario de la tabla.

retention

int

Periodo de retención.

serde_library

cadena

Biblioteca de serialización/deserialización.

table_data_format

cadena

Formato de los datos.

table_data_location

cadena

URI de la ubicación de los datos.

table_format

cadena

Formato de tabla (por ejemplo, Iceberg, Hudi).

table_type

cadena

Tipo de tabla.

table_columns

Contiene una fila por columna en una tabla de catálogo.

Columna Tipo Descripción

id

cadena

Identificador compuesto en el formato assetId#columnName.

asset_id

cadena

Identificador de la tabla principal.

column_name

cadena

Nombre de la columna.

description

cadena

Descripción de la columna.

type

cadena

Tipo de datos de la columna.

is_partition_key

booleano

Si la columna es una clave de partición.

attachments

Contiene archivos adjuntos en formato personalizado a nivel de activo (una fila por archivo adjunto de un activo).

Columna Tipo Descripción

asset_id

cadena

Identificador del activo principal.

attachment_name

cadena

Nombre del archivo adjunto.

form_type_id

cadena

Tipo de formulario registrado del contenido.

content_json

cadena

Contenido del archivo adjunto como cadena codificada en JSON.

item_attachments

Contiene archivos adjuntos en elementos de un formulario iterable, como columnas individuales.

Columna Tipo Descripción

asset_id

cadena

Identificador del activo principal.

iterable_form_name

cadena

Nombre del formulario iterable (por ejemplo, columnas).

item_name

cadena

Nombre del elemento (por ejemplo, el nombre de la columna).

attachment_name

cadena

Nombre del archivo adjunto.

form_type_id

cadena

Tipo de formulario registrado del contenido.

content_json

cadena

Contenido del archivo adjunto como cadena codificada en JSON.

glossaries

Contiene una fila por glosario.

Columna Tipo Descripción

id

cadena

Identificador único del glosario.

description

cadena

Descripción del glosario.

name

cadena

Nombre del glosario.

status

cadena

Estado (ENABLED o DISABLED).

glossary_terms

Contiene una fila por término del glosario.

Columna Tipo Descripción

id

cadena

Identificador único del término.

glossary_id

cadena

Identificador del glosario principal.

long_description

cadena

Descripción detallada del término.

name

cadena

Nombre del término.

short_description

cadena

Descripción breve del término.

status

cadena

Estado (ENABLED o DISABLED).

terminos_del_glosario_asociado

Contiene una fila por asociación entre un término del glosario y un activo.

Columna Tipo Descripción

asset_id

cadena

Identificador del activo al que está asociado el término del glosario.

glossary_term_id

cadena

Identificador del término del glosario que está asociado al activo. Se une a la tabla glossary_terms.

Consulta de tablas del sistema de catálogo

Antes de poder consultar los metadatos del catálogo exportados a Tablas de S3 Tables mediante los servicios de análisis de AWS como Amazon EMR, debe activar la integración de análisis en el bucket de tablas administrado de AWS aws-catalog y configurar los permisos de AWS Lake Formation.

Requisitos previos

  • La exportación de metadatos del catálogo está activada y el estado es ENABLED.

  • Acceso a otros servicios de análisis.

  • Esperó 5 minutos después de activar la exportación para que los datos estuvieran disponibles.

Información general de la integración

Para obtener información detallada sobre la integración de Tablas de S3 Tables con los servicios de análisis de AWS, incluidos los requisitos previos, la configuración de roles de IAM y los procedimientos paso a paso, consulte Integración de Tablas de Amazon S3 con servicios de análisis de AWS en la Guía del usuario de Amazon Simple Storage Service.

Tras activar la exportación de Tablas de S3 y configurar la integración de análisis, puede consultar los metadatos del Catálogo de datos mediante servicios de análisis de AWS como Amazon Redshift y Amazon EMR. Esto le permite realizar auditorías y análisis de metadatos mediante SQL estándar.

Consultas de ejemplo

Enumeración de todas las tablas del catálogo con su base de datos y formato

SELECT id, name, database_name, table_format FROM aws_catalog.glue.tables;
Búsqueda de columnas con descripciones para una tabla específica

SELECT column_name, type, description FROM aws_catalog.glue.table_columns WHERE asset_id = 'table-id';
Unión de los términos del glosario a su glosario principal

SELECT g.name AS glossary_name, t.name AS term_name, t.short_description FROM aws_catalog.catalog_metadata.glossary_terms t JOIN aws_catalog.catalog_metadata.glossaries g ON t.glossary_id = g.id WHERE g.status = 'ENABLED';
Búsqueda de tablas asociadas a un término específico del glosario

SELECT t.name, t.database_name, gt.name AS term_name FROM aws_catalog.glue.tables t JOIN aws_catalog.catalog_metadata.associated_glossary_terms agt ON agt.asset_id = t.id JOIN aws_catalog.catalog_metadata.glossary_terms gt ON gt.id = agt.glossary_term_id WHERE gt.name = 'term-name';
Extracción de un campo de un archivo adjunto de un formulario personalizado

SELECT asset_id, attachment_name, json_extract_scalar(content_json, '$.owner') AS data_owner FROM aws_catalog.catalog_metadata.attachments WHERE form_type_id = 'your-form-type-id';