View a markdown version of this page

Exporter les métadonnées vers S3 Tables (aperçu) - AWS Glue

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exporter les métadonnées vers S3 Tables (aperçu)

Note

L'exportation des métadonnées du catalogue est disponible en tant que fonctionnalité de prévisualisation. Cette fonctionnalité est sujette à modification avant sa disponibilité générale.

Présentation de

Vous pouvez exporter vos AWS Glue Data Catalog métadonnées dans des tables du système de catalogue géré stockées dans Amazon S3 Tables. Lorsque vous activez l'exportation de tables S3, vos métadonnées techniques et commerciales sont stockées dans des tables Apache Iceberg en lecture seule dans le compartiment de aws-catalog tables AWS géré, ce qui les rend interrogeables à l'aide de SQL avec des services d' AWS analyse tels qu'Amazon Redshift et Amazon EMR.

Dans le compartiment de aws-catalog tables, les tables système se trouvent dans les espaces de noms suivants :

  • glue— contient tables ettable_columns.

  • catalog_metadata— contient glossariesglossary_terms, associated_glossary_termsattachments, etitem_attachments.

Les tables système suivantes sont actuellement prises en charge :

Table système Contains

tables

Des métadonnées techniques et commerciales pour chaque table du catalogue de données, telles que son nom, sa base de données, sa description, son emplacement de stockage et son format.

table_columns

Les colonnes de chaque table du catalogue, y compris le nom de chaque colonne, son type de données, sa description et s'il s'agit d'une clé de partition.

glossaries

Les glossaires professionnels de votre catalogue, y compris le nom, la description et le statut de chaque glossaire.

glossary_terms

Les termes définis dans vos glossaires, y compris le nom, la description, le glossaire parent et le statut de chaque terme.

associated_glossary_terms

Les associations entre les termes du glossaire et les actifs, y compris l'identifiant de l'actif et l'identifiant des termes du glossaire.

attachments

Custom-form les métadonnées jointes au niveau de la ressource, y compris le type de formulaire et le contenu de la pièce jointe.

item_attachments

Custom-form les métadonnées associées aux éléments d'un actif, telles que des colonnes individuelles, y compris le nom du formulaire itérable, le nom de l'élément, le type de formulaire et le contenu de la pièce jointe.

Pour le schéma complet au niveau des colonnes de chaque table, consultez. Référence des tables du système de catalogue

Comment fonctionne l'exportation des métadonnées du catalogue

Une fois que vous avez activé l'exportation, le catalogue de données effectue un remplissage unique des métadonnées de votre catalogue existant, puis tient les tables système à jour au fur et à mesure que vous apportez des modifications. Les métadonnées récemment écrites ou mises à jour sont généralement visibles dans les tables système en 5 minutes environ.

Les tables système se trouvent dans les catalog_metadata espaces de noms glue et du compartiment de aws-catalog tables. Une table système donnée apparaît la première fois que des métadonnées de ce type apparaissent dans votre catalogue. Par exemple, si vous activez l'exportation et que votre catalogue ne contient que des tables et des bases de données, seules les tables système associées aux tables s'affichent. Les tables du système de glossaire apparaissent une fois que vous avez créé votre premier glossaire.

Activez l'exportation des métadonnées du catalogue à l'aide du AWS CLI

L'exportation des métadonnées du catalogue est un paramètre au niveau du compte. Vous pouvez l'activer ou le désactiver à l'aide du AWS CLI.

Conditions préalables

L'identité IAM que vous utilisez doit être autorisée à appeler les opérations de configuration d'exportation glue:PutDataCatalogExportConfiguration etglue:GetDataCatalogExportConfiguration, ainsi ques3tables:CreateTable. Pour plus d'informations sur les autorisations relatives aux tables S3, consultez la section Création de tables dans des compartiments de tables S3 dans le guide de l'utilisateur d'Amazon Simple Storage Service.

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

Toutes les données des tables S3, y compris les métadonnées du catalogue de données, sont cryptées par défaut. SSE-S3 Vous pouvez choisir de chiffrer l'exportation de votre catalogue à l'aide de AWS KMS clés (SSE-KMS). Si vous choisissez de chiffrer à l'aide de AWS KMS clés, vous devez ajouter des autorisations supplémentaires en suivant les étapes suivantes :

  1. Accordez au principal du service d'exportation du catalogue de données et au service de maintenance S3 Tables les autorisations principales d'utiliser votre clé KMS (politique de clé).

  2. Accordez au principal IAM qui exécute les autorisations d'exportation pour utiliser la clé KMS (politique d'identité).

Octroi au principal du service d'exportation du catalogue de données et aux autorisations principales du service de maintenance des tables S3 sur votre clé KMS

AWS Glue Pour autoriser l'exportation des métadonnées chiffrées du catalogue et permettre la maintenance automatique des tables, comme le compactage et la suppression des fichiers non référencés sur les tables exportées, vous devez autoriser les principaux de service suivants à accéder à votre clé KMS :

  • systemtables.catalog.amazonaws.com— exporte les métadonnées chiffrées du catalogue vers S3 Tables.

  • maintenance.s3tables.amazonaws.com— effectue une maintenance automatique des tables sur les tables exportées.

AWS Glue écrit dans le compartiment de tables AWS géré nomméaws-catalog. La clé KMS utilisée pour chiffrer l'exportation des tables S3 n'a pas besoin d'être la même que celle utilisée pour chiffrer le catalogue de données au repos. AWS Glue prend uniquement en charge les clés KMS symétriques. Pour accorder l'accès à ces principaux de service, vous pouvez utiliser l'exemple de politique clé suivant. Dans cette politique, le principal de maintenance.s3tables.amazonaws.com service est autorisé à utiliser une clé KMS spécifique pour chiffrer et déchiffrer les tables du compartiment de tables. aws-catalog Pour plus d'informations sur le principal du service de maintenance S3 Tables, consultez la section Exigences d'autorisation pour le SSE-KMS chiffrement des tables S3 dans le guide de l'utilisateur d'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/*" } } } ] }

Autorisations IAM requises pour le principal pour l'exportation

Accordez les autorisations suivantes aux principaux responsables qui exécutent les exportations. La politique suivante accorde à l'IAM l'accès principal pour déchiffrer un code spécifique AWS Glue Data Catalog, en fonction du contexte de glue_catalog_id chiffrement (la valeur est la vôtre). 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" } } } ] }

Pour activer l'exportation des métadonnées du catalogue

  1. Exécutez la commande suivante pour activer l'exportation :

    aws glue put-data-catalog-export-configuration \ --export-setting ENABLED
  2. Confirmez la configuration en exécutant la commande suivante :

    aws glue get-data-catalog-export-configuration

    Exemple de réponse :

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

    Le Status champ passe de à ENABLING au ENABLED fur et à mesure que le remblai initial progresse.

Pour désactiver l'exportation des métadonnées du catalogue

Exécutez la commande suivante :

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

Référence des tables du système de catalogue

Toutes les tables système se trouvent dans les catalog_metadata espaces de noms glue ou du compartiment de aws-catalog tables. Chaque tableau comprend les colonnes système suivantes :

Colonne Type Description

ingestion_time

timestamp

Heure à laquelle l'enregistrement a été ingéré dans la table système (UTC).

schema_version

chaîne

Identifiant de version du schéma pour la table.

tables

Contient une ligne par table de catalogue.

Colonne Type Description

id

chaîne

Identifiant unique de la table.

catalog_id

chaîne

Identifiant du catalogue.

catalog_name

chaîne

Nom du catalogue.

update_time

timestamp

Horodatage de la dernière mise à jour.

created_time

timestamp

Horodatage de création.

created_by_id

chaîne

Identifiant du principal qui a créé la table.

created_by_type

chaîne

Type du principal créateur.

description

chaîne

Description du tableau.

name

chaîne

Nom de la table.

namespace

chaîne

Espace de noms de la table.

region_name

chaîne

AWS Région.

tags

carte<string, string>

Balises de ressources.

type

chaîne

Type d'actif.

updated_by_id

chaîne

Identifiant du principal qui a mis à jour la table pour la dernière fois.

updated_by_type

chaîne

Type du principal de mise à jour.

database_name

chaîne

Base de données contenant la table.

input_format

chaîne

Classe de format d'entrée.

lake_formation_registration

chaîne

AWS Lake Formation état de l'enregistrement.

output_format

chaîne

Classe de format de sortie.

owner

chaîne

Propriétaire de la table.

retention

int

Période de conservation.

serde_library

chaîne

Serialization/deserialization bibliothèque.

table_data_format

chaîne

Format de données.

table_data_location

chaîne

URI de localisation des données.

table_format

chaîne

Format de tableau (par exemple, Iceberg, Hudi).

table_type

chaîne

Type de tableau.

table_colonnes

Contient une ligne par colonne dans une table de catalogue.

Colonne Type Description

id

chaîne

Identifiant composite au formatassetId#columnName.

asset_id

chaîne

Identifiant de la table parent.

column_name

chaîne

Nom de la colonne.

description

chaîne

Description de la colonne.

type

chaîne

Type de données de colonne.

is_partition_key

boolean

Indique si la colonne est une clé de partition.

attachments

Contient des pièces jointes personnalisées au niveau de l'actif (une ligne par pièce jointe sur un actif).

Colonne Type Description

asset_id

chaîne

Identifiant de l'actif parent.

attachment_name

chaîne

Nom de la pièce jointe.

form_type_id

chaîne

Type de contenu du formulaire enregistré.

content_json

chaîne

Contenu de la pièce jointe sous forme JSON-encoded de chaîne.

pièces_pièces jointes

Contient des pièces jointes sur des éléments d'un formulaire itérable, tels que des colonnes individuelles.

Colonne Type Description

asset_id

chaîne

Identifiant de l'actif parent.

iterable_form_name

chaîne

Nom du formulaire itérable (par exemple, colonnes).

item_name

chaîne

Nom de l'élément (par exemple, le nom de la colonne).

attachment_name

chaîne

Nom de la pièce jointe.

form_type_id

chaîne

Type de contenu du formulaire enregistré.

content_json

chaîne

Contenu de la pièce jointe sous forme JSON-encoded de chaîne.

glossaires

Contient une ligne par glossaire.

Colonne Type Description

id

chaîne

Identifiant unique du glossaire.

description

chaîne

Description du glossaire.

name

chaîne

Nom du glossaire.

status

chaîne

État (ENABLEDouDISABLED).

glossaire_termes

Contient une ligne par terme du glossaire.

Colonne Type Description

id

chaîne

Identifiant de terme unique.

glossary_id

chaîne

Identifiant du glossaire parent.

long_description

chaîne

Description détaillée du terme.

name

chaîne

Nom du terme.

short_description

chaîne

Brève description du terme.

status

chaîne

État (ENABLEDouDISABLED).

termes_lexiques_associés

Contient une ligne par association entre un terme du glossaire et un actif.

Colonne Type Description

asset_id

chaîne

Identifiant de la ressource à laquelle le terme du glossaire est associé.

glossary_term_id

chaîne

Identifiant du terme du glossaire associé à l'actif. Se joint à la glossary_terms table.

Interroger les tables du système du catalogue

Avant de pouvoir interroger les métadonnées du catalogue exportées vers des tables S3 à l'aide de services d' AWS analyse tels qu'Amazon EMR, vous devez activer l'intégration des analyses sur le compartiment de aws-catalog tables AWS géré et configurer AWS Lake Formation les autorisations.

Conditions préalables

  • L'exportation des métadonnées du catalogue est activée et le statut estENABLED.

  • Accès à ou à d'autres services d'analyse.

  • J'ai attendu 5 minutes après avoir activé l'exportation pour que les données soient disponibles.

Présentation de l’intégration

Pour obtenir des informations détaillées sur l'intégration des tables S3 aux services AWS d'analyse, notamment les prérequis, la configuration des rôles IAM et les procédures étape par étape, consultez la section Intégration des tables Amazon S3 aux services AWS d'analyse dans le guide de l'utilisateur d'Amazon Simple Storage Service.

Après avoir activé l'exportation des tables S3 et configuré l'intégration des analyses, vous pouvez interroger les métadonnées de votre catalogue de données à l'aide de services d' AWS analyse tels qu'Amazon Redshift et Amazon EMR. Cela vous permet d'effectuer des audits et des analyses de métadonnées à l'aide du langage SQL standard.

Exemples de requêtes

Répertorier toutes les tables du catalogue avec leur base de données et leur format

SELECT id, name, database_name, table_format FROM aws_catalog.glue.tables;
Rechercher des colonnes contenant des descriptions pour un tableau spécifique

SELECT column_name, type, description FROM aws_catalog.glue.table_columns WHERE asset_id = 'table-id';
Joindre les termes du glossaire à leur glossaire parent

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';
Rechercher des tableaux associés à un terme spécifique du glossaire

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';
Extraire un champ d'une pièce jointe à un formulaire personnalisé

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';