View a markdown version of this page

Connexion au catalogue de données à l'aide de AWS Glue Point de terminaison REST Iceberg - 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.

Connexion au catalogue de données à l'aide de AWS Glue Point de terminaison REST Iceberg

Le point de terminaison REST Iceberg d’ AWS Glue prend en charge les opérations API spécifiées dans la spécification REST Apache Iceberg. À l’aide d’un client REST Iceberg, vous pouvez connecter votre application exécutée sur un moteur analytique au catalogue REST hébergé dans le catalogue de données.

Le point de terminaison prend en charge les deux spécifications des tables Apache Iceberg : v1 et v2, la valeur par défaut étant v2. Lorsque vous utilisez la spécification de la table Iceberg v1, vous devez spécifier v1 dans l’appel d’API. À l’aide de l’opération d’API, vous pouvez accéder aux tables Iceberg stockées à la fois dans le stockage d’objets Amazon S3 et dans le stockage de tableaux Amazon S3.

Configuration du point de terminaison

Vous pouvez accéder au AWS Glue Catalogue Iceberg REST utilisant le point de terminaison du service. Reportez-vous au guide de référence des points de terminaison de service AWS Glue pour le point de terminaison spécifique à la région. Par exemple, lorsque vous vous connectez à AWS Glue dans la région us-east-1, vous devez configurer la propriété d’URI du point de terminaison comme suit :

Endpoint : https://glue.us-east-1.amazonaws.com/iceberg

Propriétés de configuration supplémentaires : lorsque vous utilisez le client Iceberg pour connecter un moteur d’analytique tel que Spark au point de terminaison du service, vous devez indiquer les propriétés de configuration d’application suivantes :

catalog_name = "mydatacatalog"
aws_account_id = "123456789012"
aws_region = "us-east-1"
spark = SparkSession.builder \
    ... \
    .config("spark.sql.defaultCatalog", catalog_name) \
    .config(f"spark.sql.catalog.{catalog_name}", "org.apache.iceberg.spark.SparkCatalog") \
    .config(f"spark.sql.catalog.{catalog_name}.type", "rest") \
    .config(f"spark.sql.catalog.{catalog_name}.uri", "https://glue.{aws_region}.amazonaws.com/iceberg") \
    .config(f"spark.sql.catalog.{catalog_name}.warehouse", "{aws_account_id}") \
    .config(f"spark.sql.catalog.{catalog_name}.rest.sigv4-enabled", "true") \
    .config(f"spark.sql.catalog.{catalog_name}.rest.signing-name", "glue") \    
    .config("spark.sql.extensions","org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \
    .getOrCreate()
     

AWS Glue Point final de l'iceberg https://glue.us-east-1.amazonaws.com/iceberg prend en charge les API REST Iceberg suivantes :

  • GetConfig

  • ListNamespaces

  • CreateNamespace

  • LoadNamespaceMetadata

  • UpdateNamespaceProperties

  • DeleteNamespace

  • ListTables

  • CreateTable

  • LoadTable

  • TableExists

  • UpdateTable

  • DeleteTable

Authentification

Le AWS Glue Le point de terminaison REST Iceberg prend en charge deux méthodes d'authentification. Choisissez la méthode qui correspond à la manière dont votre moteur d'analyse ou votre intégration se connecte au catalogue.

  • AWS Signature, version 4 (SigV4) — La valeur par défaut pour AWS SDK et AWS moteurs d'analyse natifs qui s'authentifient avec AWS informations d'identification.

  • Jeton porteur OAuth 2.0 — Pour les partenaires d'intégration externes et les moteurs de requêtes tiers qui utilisent le modèle d'authentification OAuth défini par la spécification Apache Iceberg REST Catalog. Le client présente un jeton d'accès OAuth dans le Authorization: Bearer en-tête sur chaque demande.

Authentification avec des jetons au porteur OAuth 2.0

Les clients externes obtiennent un jeton d'accès OAuth de courte durée auprès de AWS Sign-In et présentez-le au AWS Glue Point de terminaison REST Iceberg. AWS Glue valide le jeton et applique AWS Lake Formation autorisations pour chaque demande. Pour le LoadTable opération, les informations d'identification Amazon S3 qui AWS Glue les ventes sont limitées par le rôle assumé de l'IAM et les subventions de Lake Formation pour ce rôle.

Cette intégration utilise la subvention d'échange de jetons OAuth 2.0 (RFC 8693). Un partenaire d'intégration présente le jeton Web JSON (JWT) d'un utilisateur final à AWS Sign-In et l'échange contre un jeton d'accès OAuth de courte durée limité au AWS Glue service. Le partenaire présente ensuite ce jeton au AWS Glue Point de terminaison REST Iceberg pour lire vos tableaux.

Pour les détails complets de la configuration et de l'échange de jetons, voir Configurer l'accès OAuth à AWS Glue Catalogue Iceberg REST dans le AWS Sign-In Guide de l'utilisateur.

Paramètres du chemin d’accès au préfixe et au catalogue

Les API du catalogue REST Iceberg contiennent un préfixe de forme libre dans leurs URL de demande. Par exemple, le ListNamespaces L'appel d'API utilise le GET/v1/{prefix}/namespaces Format d'URL. AWS Glue le préfixe suit toujours le /catalogs/{catalog} structure pour garantir que le chemin REST aligne le AWS Glue hiérarchie multi-catalogues. Le paramètre de chemin {catalog} peut être dérivé en fonction des règles suivantes :

Modèle d’accès

Style d’ID du catalogue Glue

Style de préfixe

Exemple d’ID de catalogue par défaut

Exemple de route REST

Accéder au catalogue par défaut dans le compte actuel

facultatif :

ne s’applique pas

OBTENIR/v1/catalogs/: /namespaces

Accéder au catalogue par défaut dans un compte spécifique

accountID accountID 111122223333 OBTENIR/v1/catalogs/111122223333/namespaces

Accéder à un catalogue imbriqué dans le compte actuel

catalog1/catalog2

catalog1/catalog2

rmscatalog1:db1

OBTENIR/v1/catalogs/rmscalog1 :db1/namespaces

Accéder à un catalogue imbriqué dans un compte spécifique

compteId:catalog1/catalog2

compteId:catalog1/catalog2

123456789012/rmscatalog1:db1

OBTENIR/v1/catalogs/123456789012 : catalogue rms 1 :db1/namespaces

Le mappage de cet ID de catalogue vers le préfixe n’est requis que lorsque vous appelez directement les API REST. Lorsque vous travaillez avec AWS Glue API du catalogue Iceberg REST via un moteur, vous devez spécifier AWS Glue ID de catalogue dans le warehouse paramètre pour le réglage de l'API de votre catalogue Iceberg REST ou dans le glue.id paramètre pour votre AWS Glue réglage de l'API des extensions. Par exemple, découvrez comment vous pouvez l’utiliser avec EMR Spark dans Use an Iceberg cluster with Spark.

Paramètre de chemin d’accès à l’espace de noms

Les espaces de noms du chemin d’accès aux API du catalogue REST Iceberg peuvent comporter plusieurs niveaux. Toutefois, AWS Glue ne prend en charge que les espaces de noms à un seul niveau. Pour accéder à un espace de noms dans une hiérarchie de catalogue à plusieurs niveaux, vous pouvez vous connecter à un catalogue à plusieurs niveaux situé au-dessus de l’espace de noms pour référencer l’espace de noms. Cela permet à tout moteur de requête prenant en charge la notation en 3 parties de catalog.namespace.table pour accéder à des objets dans AWS Glue de la hiérarchie du catalogue à plusieurs niveaux sans problèmes de compatibilité par rapport à l'utilisation de l'espace de noms à plusieurs niveaux.