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émtablesetable_columns.catalog_metadata: contémglossaries,glossary_terms,associated_glossary_terms,attachmentseitem_attachments.
No momento, as seguintes tabelas do sistema são compatíveis:
| Tabela do sistema | Contém |
|---|---|
|
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. |
|
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. |
|
Os glossários de negócios do catálogo, incluindo o nome, a descrição e o status de cada glossário. |
|
Os termos definidos nos glossários, incluindo o nome, as descrições, o glossário superior e o status de cada termo. |
|
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. |
|
Metadados do formulário personalizado anexados no nível do ativo, incluindo o tipo de formulário e o conteúdo do anexo. |
|
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:
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).
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
-
Execute o seguinte comando para habilitar a exportação:
aws glue put-data-catalog-export-configuration \ --export-setting ENABLED -
Confirme a configuração executando o seguinte comando:
aws glue get-data-catalog-export-configurationExemplo de resposta:
{ "ExportSetting": "ENABLED", "Status": "ENABLED", "S3TableBucketArn": "arn:aws:s3tables:us-east-1:111122223333:bucket/aws-catalog" }O campo
Statuspassa deENABLINGparaENABLEDà 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 |
|---|---|---|
|
timestamp |
Hora que o registro foi ingerido na tabela do sistema (UTC). |
|
string |
Identificador de versão do esquema da tabela. |
tabelas
Contém uma linha para cada tabela do catálogo.
| Coluna | Tipo | Descrição |
|---|---|---|
| string | Um identificador exclusivo da tabela. |
| string | Identificador do catálogo. |
| string | Nome do catálogo. |
| timestamp | Timestamp da última atualização. |
| timestamp | Timestamp de criação. |
| string | Identificador da entidade principal que criou a tabela. |
| string | Tipo da entidade principal criadora. |
| string | Descrição da tabela. |
| string | O nome da tabela. |
| string | Namespace da tabela. |
| string | AWSRegião . |
| map<string, string> | Tags de recurso. |
| string | Tipo de ativo. |
| string | Identificador da última entidade principal que atualizou a tabela. |
| string | Tipo da entidade principal atualizadora. |
| string | Banco de dados que contém a tabela. |
| string | Classe do formato de entrada. |
| string | Status de registro do AWS Lake Formation. |
| string | Classe do formato de saída. |
| string | Proprietário da tabela. |
| int | Período de retenção. |
| string | Biblioteca de serialização/desserialização. |
| string | Formato dos dados. |
| string | URI de localização dos dados. |
| string | Formato da tabela (por exemplo, Iceberg, Hudi). |
| string | Tipo de tabela. |
table_columns
Contém uma linha para cada coluna de uma tabela do catálogo.
| Coluna | Tipo | Descrição |
|---|---|---|
| string | Identificador composto no formato |
| string | Identificador da tabela superior. |
| string | Nome da coluna. |
| string | Descrição da coluna. |
| string | Tipo de dados da coluna. |
| 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 |
|---|---|---|
| string | Identificador do ativo superior. |
| string | Nome do anexo. |
| string | Tipo de formulário registrado do conteúdo. |
| 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 |
|---|---|---|
| string | Identificador do ativo superior. |
| string | Nome do formulário iterável (por exemplo, colunas). |
| string | Nome do item (por exemplo, o nome da coluna). |
| string | Nome do anexo. |
| string | Tipo de formulário registrado do conteúdo. |
| 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 |
|---|---|---|
| string | Identificador exclusivo do glossário. |
| string | Descrição do glossário. |
| string | Nome do glossário. |
| string | Status ( |
glossary_terms
Contém uma linha para cada termo do glossário.
| Coluna | Tipo | Descrição |
|---|---|---|
| string | Identificador exclusivo do termo. |
| string | Identificador do glossário superior. |
| string | Descrição detalhada do termo. |
| string | Nome do termo. |
| string | Descrição resumida do termo. |
| string | Status ( |
associated_glossary_terms
Contém uma linha para cada associação entre um termo do glossário e um ativo.
| Coluna | Tipo | Descrição |
|---|---|---|
| string | Identificador do ativo ao qual o termo do glossário é associado. |
| string | Identificador do termo do glossário associado ao ativo. Uniões à tabela |
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';