View a markdown version of this page

Herstellen einer Verbindung zum Datenkatalog mithilfe von AWS Glue Iceberg REST-Endpunkt - AWS Glue

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Herstellen einer Verbindung zum Datenkatalog mithilfe von AWS Glue Iceberg REST-Endpunkt

Der Iceberg-REST-Endpunkt von AWS Glue unterstützt API-Operationen, die in der Apache-Iceberg-REST-Spezifikation spezifiziert sind. Mit einem Iceberg-REST-Client können Sie Ihre auf einer Analyse-Engine ausgeführte Anwendung mit dem im Datenkatalog gehosteten REST-Katalog verbinden.

Der Endpunkt unterstützt beide Apache-Iceberg-Tabellenspezifikationen – v1 und v2, wobei standardmäßig v2 verwendet wird. Wenn Sie die Iceberg-Tabellenspezifikation v1 verwenden, müssen Sie v1 im API-Aufruf angeben. Mit der API-Operation können Sie auf Iceberg-Tabellen zugreifen, die sowohl im Amazon-S3-Objektspeicher als auch im Amazon-S3-Tables-Speicher gespeichert sind.

Endpunktkonfiguration

Sie können auf das zugreifen AWS Glue Der Iceberg REST-Katalog verwendet den Service-Endpunkt. Die regionsspezifischen Endpunkte finden Sie im Referenzhandbuch zu den AWS Glue -Service-Endpunkten. Wenn Sie beispielsweise eine Verbindung zu AWS Glue in der Region us-east-1 herstellen, müssen Sie die Eigenschaft „Endpunkt-URI“ wie folgt konfigurieren:

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

Zusätzliche Konfigurationseigenschaften: Wenn Sie den Iceberg-Client verwenden, um eine Analyse-Engine wie Spark mit dem Service-Endpunkt zu verbinden, müssen Sie die folgenden Anwendungskonfigurationseigenschaften angeben:

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 Iceberg-Endpunkt https://glue.us-east-1.amazonaws.com/iceberg unterstützt die folgenden Iceberg REST-APIs:

  • GetConfig

  • ListNamespaces

  • CreateNamespace

  • LoadNamespaceMetadata

  • UpdateNamespaceProperties

  • DeleteNamespace

  • ListTables

  • CreateTable

  • LoadTable

  • TableExists

  • UpdateTable

  • DeleteTable

Authentifizierung

Die AWS Glue Der Iceberg REST-Endpunkt unterstützt zwei Authentifizierungsmethoden. Wählen Sie die Methode, die der Art und Weise entspricht, wie Ihre Analytics-Engine oder Integration mit dem Katalog verbunden ist.

  • AWS Signaturversion 4 (SigV4) — Die Standardeinstellung für AWS SDKs und AWS native Analyse-Engines, die sich authentifizieren mit AWS Anmeldeinformationen.

  • OAuth 2.0-Trägertoken — Für externe Integrationspartner und Abfrage-Engines von Drittanbietern, die das in der Apache Iceberg REST Catalog-Spezifikation definierte OAuth-Authentifizierungsmodell verwenden. Der Client präsentiert ein OAuth-Zugriffstoken im Authorization: Bearer Header bei jeder Anfrage.

Authentifizierung mit OAuth 2.0-Bearer-Token

Externe Clients erhalten ein kurzlebiges OAuth-Zugriffstoken von AWS Sign-In und präsentiere es dem AWS Glue Iceberg REST-Endpunkt. AWS Glue validiert das Token und setzt es durch AWS Lake Formation Berechtigungen für jede Anfrage. Für die LoadTable Betrieb, die Amazon S3-Anmeldeinformationen, die AWS Glue Verkäufer sind durch die angenommene IAM-Rolle und die Lake Formation-Zuschüsse für diese Rolle begrenzt.

Diese Integration verwendet den OAuth 2.0 Token Exchange Grant (RFC 8693). Ein Integrationspartner überreicht das JSON Web Token (JWT) eines Endbenutzers an AWS Sign-In und tauscht es gegen ein kurzlebiges OAuth-Zugriffstoken aus, das im Geltungsbereich von AWS Glue Dienst. Der Partner überreicht dieses Token dann dem AWS Glue Iceberg REST-Endpunkt zum Lesen Ihrer Tabellen.

Die vollständige Einrichtung und Einzelheiten zum Token-Austausch finden Sie unter Konfigurieren Sie den OAuth-Zugriff auf AWS Glue Iceberg REST-Katalog im AWS Sign-In Benutzerleitfaden.

Präfix- und Katalogpfadparameter

Iceberg-REST-Katalog-APIs haben ein frei wählbares Präfix in ihren Anfrage-URLs. Zum Beispiel die ListNamespaces Der API-Aufruf verwendet den GET/v1/{prefix}/namespaces URL-Format. AWS Glue Das Präfix folgt immer dem /catalogs/{catalog} Struktur, um sicherzustellen, dass der REST-Pfad dem entspricht AWS Glue Hierarchie mit mehreren Katalogen. Der {catalog}-Pfadparameter kann auf der Grundlage der folgenden Regeln abgeleitet werden:

Zugriffsmuster

Glue-Katalog-ID-Stil

Präfix-Stil

Beispiel für eine Standard-Katalog-ID

Beispiel für eine REST-Route

Zugriff auf den Standardkatalog im aktuellen Konto

Nicht erforderlich :

Nicht zutreffend

ERHALTE/v1/catalogs/: /Namespaces

Zugriff auf den Standardkatalog in einem bestimmten Konto

accountID accountID 111122223333 ERHALTE/v1/catalogs/111122223333/namespaces

Zugriff auf einen verschachtelten Katalog im aktuellen Konto

catalog1/catalog2

catalog1/catalog2

rmscatalog1:db1

BEKOMMEN/v1/catalogs/rmscatalog1:db1/namespaces

Zugriff auf einen verschachtelten Katalog in einem bestimmten Konto

KontoId:catalog1/catalog2

KontoId:catalog1/catalog2

123456789012/rmscatalog1: db1

ERHALTEN/v1/catalogs/123456789012: rmscatalog1:db1/namespaces

Diese Zuordnung von Katalog-ID zu Präfix ist nur erforderlich, wenn Sie die REST-APIs direkt aufrufen. Wenn Sie mit dem arbeiten AWS Glue Die Iceberg REST-Katalog-APIs über eine Engine müssen Sie angeben AWS Glue Katalog-ID im warehouse Parameter für Ihre Iceberg REST-Katalog-API-Einstellung oder in der glue.id Parameter für deine AWS Glue API-Einstellung für Erweiterungen. Informationen zur Verwendung mit EMR Spark finden Sie unter Verwenden Sie einen Iceberg-Cluster mit Spark.

Namespace-Pfadparameter

Namespaces im Pfad der Iceberg REST-Katalog-APIs können mehrere Ebenen haben. AWS Glue unterstützt jedoch nur einstufige Namespaces. Um auf einen Namespace in einer mehrstufigen Kataloghierarchie zuzugreifen, können Sie eine Verbindung zu einem übergeordneten mehrstufigen Katalog herstellen, um auf den Namespace zu verweisen. Dies ermöglicht jede Abfrage-Engine, die die dreiteilige Notation von unterstützt catalog.namespace.table um auf Objekte zuzugreifen in AWS Glue Die mehrstufige Kataloghierarchie ohne Kompatibilitätsprobleme im Vergleich zur Verwendung des mehrstufigen Namespaces.