View a markdown version of this page

Exportar metadados para Tabelas do S3 (prévia) - AWS Glue

Exportar metadados para Tabelas do S3 (prévia)

nota

A exportação de metadados do catálogo está disponível como um atributo da versão prévia. Esse atributo está sujeito a alterações antes de ser disponibilizado ao público em geral.

Visão geral

Você pode exportar os metadados do AWS Glue Data Catalog para tabelas gerenciadas do sistema de catálogos armazenadas em Tabelas do Amazon S3. Quando você habilita a exportação para Tabelas do S3, os metadados técnicos e de negócios são armazenados em tabelas Apache Iceberg somente leitura no bucket de tabelas do aws-catalog gerenciado pela AWS, o que os permite consultá-los usando SQL com os serviços de analytics da AWS, como o Amazon Redshift e o Amazon EMR.

Dentro do bucket de tabelas do aws-catalog, as tabelas do sistema residem nos seguintes namespaces:

  • glue: contém tables e table_columns.

  • catalog_metadata: contém glossaries, glossary_terms, associated_glossary_terms, attachments e item_attachments.

No momento, as seguintes tabelas do sistema são compatíveis:

Tabela do sistema Contém

tables

Os metadados técnicos e de negócios de cada tabela do Data Catalog, como nome, banco de dados, descrição, local de armazenamento e formato.

table_columns

As colunas de cada tabela do catálogo, incluindo o nome, o tipo de dados, a descrição de cada coluna e se trata-se ou não de uma chave de partição.

glossaries

Os glossários de negócios do catálogo, incluindo o nome, a descrição e o status de cada glossário.

glossary_terms

Os termos definidos nos glossários, incluindo o nome, as descrições, o glossário superior e o status de cada termo.

associated_glossary_terms

As associações entre os termos do glossário e os ativos, incluindo o identificador do ativo e o identificador do termo do glossário.

attachments

Metadados do formulário personalizado anexados no nível do ativo, incluindo o tipo de formulário e o conteúdo do anexo.

item_attachments

Metadados do formulário personalizado anexados a itens dentro de um ativo, como colunas individuais, incluindo nome do formulário iterável, nome do item, tipo de formulário e conteúdo do anexo.

Para ver o esquema completo no nível da coluna de cada tabela, consulte Referência de tabelas do sistema de catálogos.

Como funciona a exportação de metadados de catálogo

Depois de habilitar a exportação, o Data Catalog executa uma única vez um preenchimento retroativo dos metadados de catálogo existentes e depois mantém as tabelas do sistema atualizadas à medida que você faz alterações. Os metadados recém-escritos ou atualizados geralmente ficam visíveis nas tabelas do sistema em mais o menos cinco minutos.

As tabelas do sistema residem nos namespaces glue e catalog_metadata do bucket de tabelas do aws-catalog. Uma determinada tabela do sistema aparece a primeira vez que metadados desse tipo ocorrem no catálogo. Por exemplo, se a exportação estiver habilitada e o catálogo contiver somente tabelas e bancos de dados, será possível ver apenas as tabelas do sistema relacionadas a tabelas. As tabelas do sistema de glossários aparecem depois que o primeiro glossário é criado.

Habilite a exportação de metadados de catálogo usando a o AWS CLI

A exportação de metadados de catálogo é uma configuração no nível da conta. Você a habilita ou desabilita com a AWS CLI.

Pré-requisitos

A identidade do IAM que você usa deve ter permissão para chamar as operações de configuração de exportação glue:PutDataCatalogExportConfiguration e glue:GetDataCatalogExportConfiguration, bem como s3tables:CreateTable. Para obter mais informações sobre as permissões de Tabelas do S3, consulte Criar tabelas em buckets de tabelas do S3 no Guia do usuário do Amazon Simple Storage Service.

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

Por padrão, todos os dados em Tabelas do S3, inclusive os metadados do Data Catalog, são criptografados com criptografia SSE-S3. É possível optar por criptografar a exportação do catálogo com chaves do AWS KMS (SSE-KMS). Se escolher criptografar com chaves do AWS KMS, adicione mais permissões seguindo estas etapas:

  1. Conceda à entidade principal do serviço de exportação do Data Catalog e à entidade principal do serviço de manutenção de Tabelas do S3 permissões para usar a chave do KMS (política de chave).

  2. Conceda à entidade principal do IAM que executa as permissões de exportação para usar a chave do KMS (política de identidade).

Conceda à entidade principal do serviço de exportação do Data Catalog e à entidade principal do serviço de manutenção de Tabelas do S3 permissões para usar a chave do KMS

Para permitir que o AWS Glue exporte metadados de catálogo criptografados e permitir a manutenção automática das tabelas, como compactação e remoção de arquivos não referenciados das tabelas exportadas, conceda às seguintes entidades principais de serviço acesso à chave do KMS:

  • systemtables.catalog.amazonaws.com: exporta metadados criptografados do catálogo para Tabelas do S3.

  • maintenance.s3tables.amazonaws.com: realiza a manutenção automática de tabelas nas tabelas exportadas.

O AWS Glue grava no bucket da tabelas gerenciadas pela AWS denominado aws-catalog. A chave do KMS usada para criptografar a exportação de Tabelas do S3 não precisa ser a mesma usada para criptografar o Data Catalog em repouso. O AWS Glue é compatível apenas com as chaves simétricas do KMS. Para conceder acesso a essas entidades principais do serviço, use o exemplo de política de chave a seguir. Nessa política, a entidade principal do serviço maintenance.s3tables.amazonaws.com recebe permissão para usar uma chave do KMS específica para criptografar e descriptografar tabelas no bucket de tabelas do aws-catalog. Para obter mais informações sobre a entidade principal do serviço de manutenção de Tabelas do S3, consulte Requisitos de permissão para criptografia SSE-KMS da funcionalidade Tabelas do S3 no Guia do usuário do 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/*" } } } ] }

Permissões do IAM obrigatórias para a entidade principal poder exportar

Conceda às entidades principais que executam as exportações as permissões a seguir. A política a seguir concede à entidade principal do IAM acesso para descriptografar um determinado AWS Glue Data Catalog, com escopo definido pelo contexto de criptografia glue_catalog_id (o valor é o 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" } } } ] }

Para habilitar a exportação de metadados de catálogo

  1. Execute o seguinte comando para habilitar a exportação:

    aws glue put-data-catalog-export-configuration \ --export-setting ENABLED
  2. Confirme a configuração executando o seguinte comando:

    aws glue get-data-catalog-export-configuration

    Exemplo de resposta:

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

    O campo Status passa de ENABLING para ENABLED à medida que o preenchimento retroativo inicial avança.

Para desabilitar a exportação de metadados de catálogo

Execute o seguinte comando:

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

Referência de tabelas do sistema de catálogos

Todas as tabelas do sistema residem nos namespaces glue ou catalog_metadata do bucket de tabelas do aws-catalog. Toda tabela inclui as seguintes colunas do sistema:

Coluna Tipo Descrição

ingestion_time

timestamp

Hora que o registro foi ingerido na tabela do sistema (UTC).

schema_version

string

Identificador de versão do esquema da tabela.

tabelas

Contém uma linha para cada tabela do catálogo.

Coluna Tipo Descrição

id

string

Um identificador exclusivo da tabela.

catalog_id

string

Identificador do catálogo.

catalog_name

string

Nome do catálogo.

update_time

timestamp

Timestamp da última atualização.

created_time

timestamp

Timestamp de criação.

created_by_id

string

Identificador da entidade principal que criou a tabela.

created_by_type

string

Tipo da entidade principal criadora.

description

string

Descrição da tabela.

name

string

O nome da tabela.

namespace

string

Namespace da tabela.

region_name

string

AWSRegião .

tags

map<string, string>

Tags de recurso.

type

string

Tipo de ativo.

updated_by_id

string

Identificador da última entidade principal que atualizou a tabela.

updated_by_type

string

Tipo da entidade principal atualizadora.

database_name

string

Banco de dados que contém a tabela.

input_format

string

Classe do formato de entrada.

lake_formation_registration

string

Status de registro do AWS Lake Formation.

output_format

string

Classe do formato de saída.

owner

string

Proprietário da tabela.

retention

int

Período de retenção.

serde_library

string

Biblioteca de serialização/desserialização.

table_data_format

string

Formato dos dados.

table_data_location

string

URI de localização dos dados.

table_format

string

Formato da tabela (por exemplo, Iceberg, Hudi).

table_type

string

Tipo de tabela.

table_columns

Contém uma linha para cada coluna de uma tabela do catálogo.

Coluna Tipo Descrição

id

string

Identificador composto no formato assetId#columnName.

asset_id

string

Identificador da tabela superior.

column_name

string

Nome da coluna.

description

string

Descrição da coluna.

type

string

Tipo de dados da coluna.

is_partition_key

booleano

Se a coluna é uma chave de partição.

anexos

Contém anexos de formulário personalizado no nível do ativo (uma linha para cada anexo em um ativo).

Coluna Tipo Descrição

asset_id

string

Identificador do ativo superior.

attachment_name

string

Nome do anexo.

form_type_id

string

Tipo de formulário registrado do conteúdo.

content_json

string

Conteúdo do anexo como uma string codificada em JSON.

item_attachments

Contém anexos em itens de um formulário iterável, como colunas individuais.

Coluna Tipo Descrição

asset_id

string

Identificador do ativo superior.

iterable_form_name

string

Nome do formulário iterável (por exemplo, colunas).

item_name

string

Nome do item (por exemplo, o nome da coluna).

attachment_name

string

Nome do anexo.

form_type_id

string

Tipo de formulário registrado do conteúdo.

content_json

string

Conteúdo do anexo como uma string codificada em JSON.

glossários

Contém uma linha para cada glossário.

Coluna Tipo Descrição

id

string

Identificador exclusivo do glossário.

description

string

Descrição do glossário.

name

string

Nome do glossário.

status

string

Status (ENABLED ou DISABLED).

glossary_terms

Contém uma linha para cada termo do glossário.

Coluna Tipo Descrição

id

string

Identificador exclusivo do termo.

glossary_id

string

Identificador do glossário superior.

long_description

string

Descrição detalhada do termo.

name

string

Nome do termo.

short_description

string

Descrição resumida do termo.

status

string

Status (ENABLED ou DISABLED).

associated_glossary_terms

Contém uma linha para cada associação entre um termo do glossário e um ativo.

Coluna Tipo Descrição

asset_id

string

Identificador do ativo ao qual o termo do glossário é associado.

glossary_term_id

string

Identificador do termo do glossário associado ao ativo. Uniões à tabela glossary_terms.

Consultar tabelas do sistema de catálogo

Antes de poder consultar os metadados do catálogo exportados para Tabelas do S3 usando serviços de analytics da AWS, como o Amazon Athena ou o Amazon EMR, habilite a integração de analytics no bucket de tabelas do aws-catalog gerenciado pela AWS e configure as permissões do AWS Lake Formation.

Pré-requisitos

  • A exportação de metadados do catálogo está habilitada e o status é ENABLED.

  • Acesso ao ou outros serviços de analytics.

  • Esperou cinco minutos após habilitar a exportação para os dados ficarem disponíveis.

Visão geral da integração

Para ter informações detalhadas sobre como integrar a funcionalidade Tabelas do S3 aos serviços de analytics da AWS, incluindo pré-requisitos, configuração de perfil do IAM e procedimentos passo a passo, consulte Integrar a funcionalidade Tabelas do Amazon S3 a serviços de analytics da AWS no Guia do usuário do Amazon Simple Storage Service.

Depois de habilitar a exportação de Tabelas do S3 e configurar a integração de analytics, é possível consultar os metadados do Data Catalog usando serviços de analytics da AWS, como o Amazon Athena, o Amazon Redshift e o Amazon EMR. Isso permite que fazer auditorias e análises de metadados usando o SQL padrão.

Consultas de exemplo

Listar todas as tabelas do catálogo com seu respectivo banco de dados e formato

SELECT id, name, database_name, table_format FROM aws_catalog.glue.tables;
Encontrar colunas com descrições para uma tabela específica

SELECT column_name, type, description FROM aws_catalog.glue.table_columns WHERE asset_id = 'table-id';
Associar termos do glossário ao glossário superior

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';
Encontrar as tabelas associadas a um termo específico do glossário

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';
Extrair um campo de um anexo de formulário 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';