Zugreifen auf Tabellen mithilfe der Amazon S3 S3-Tabellen Iceberg REST Endpunkt - Amazon Simple Storage Service

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.

Zugreifen auf Tabellen mithilfe der Amazon S3 S3-Tabellen Iceberg REST Endpunkt

Sie können Ihre verbinden Iceberg REST Client für die Amazon S3-Tabellen Iceberg REST Endpunkt und Make REST API Aufrufe zum Erstellen, Aktualisieren oder Abfragen von Tabellen in S3-Tabellen-Buckets. Der Endpunkt implementiert eine Reihe von standardisierten Iceberg REST APIs spezifiziert in Apache Iceberg REST API-Spezifikation für Catalog Open. Der Endpunkt funktioniert durch Übersetzen Iceberg REST API Operationen in entsprechende S3-Tabellenoperationen.

Anmerkung

Amazon S3 Tables Iceberg REST Der Endpunkt kann für den Zugriff auf Tabellen in AWS Partner Network (APN-) Katalogimplementierungen oder benutzerdefinierten Katalogimplementierungen verwendet werden. Es kann auch verwendet werden, wenn Sie nur einfachen Lese-/Schreibzugriff auf einen einzelnen Tabellen-Bucket benötigen. Für andere Zugriffsszenarien empfehlen wir die Verwendung von AWS Glue Iceberg REST Endpunkt für die Verbindung zu Tabellen, der eine einheitliche Tabellenverwaltung, zentralisierte Steuerung und detaillierte Zugriffskontrolle bietet. Weitere Informationen finden Sie unter Zugreifen auf Amazon S3 S3-Tabellen mit dem AWS Glue Iceberg REST Endpunkt

Konfiguration des Endpunkts

Sie stellen eine Verbindung zu den Amazon S3-Tabellen her Iceberg REST Endpunkt, der den Service-Endpunkt verwendet. S3 Tables Iceberg REST Endpunkte haben das folgende Format:

https://s3tables.<REGION>.amazonaws.com/iceberg

Informationen zu den S3-Tabellen AWS-Regionen und Endpunkte regionsspezifischen Endpunkten finden Sie unter.

Eigenschaften der Katalogkonfiguration

Wenn Sie einen Iceberg-Client verwenden, um eine Analytics-Engine mit dem Service-Endpunkt zu verbinden, müssen Sie bei der Initialisierung des Katalogs die folgenden Konfigurationseigenschaften angeben. Ersetzen Sie die placeholder values durch die Informationen für Ihre Region und Ihren Tabellen-Bucket.

  • Der regionsspezifische Endpunkt als Endpunkt-URI: https://s3tables.<REGION>.amazonaws.com/iceberg

  • Ihr Tischeimer ARN als Lagerstandort: arn:aws:s3tables:<region>:<accountID>:bucket/<bucketname>

  • Sigv4-Eigenschaften für die Authentifizierung. Der Sigv4-Signaturname für die Dienstendpunktanforderungen lautet: s3tables

Die folgenden Beispiele zeigen Ihnen, wie Sie verschiedene Clients für die Verwendung der Amazon S3 S3-Tabellen konfigurieren. Iceberg REST Endpunkt.

PyIceberg

Um die Amazon S3 S3-Tabellen zu verwenden Iceberg REST Endpunkt mit PyIceberg, geben Sie die folgenden Eigenschaften für die Anwendungskonfiguration an:

rest_catalog = load_catalog( catalog_name, **{ "type": "rest", "warehouse":"arn:aws:s3tables:<Region>:<accountID>:bucket/<bucketname>", "uri": "https://s3tables.<Region>.amazonaws.com/iceberg", "rest.sigv4-enabled": "true", "rest.signing-name": "s3tables", "rest.signing-region": "<Region>" } )
Apache Spark

Um die Amazon S3 S3-Tabellen zu verwenden Iceberg REST Endpunkt mit Spark, geben Sie die folgenden Eigenschaften für die Anwendungskonfiguration an und ersetzen Sie die placeholder values durch die Informationen für Ihre Region und Ihren Tabellen-Bucket.

spark-shell \ --packages "org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.4.1,software.amazon.awssdk:bundle:2.20.160,software.amazon.awssdk:url-connection-client:2.20.160" \ --master "local[*]" \ --conf "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions" \ --conf "spark.sql.defaultCatalog=spark_catalog" \ --conf "spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog" \ --conf "spark.sql.catalog.spark_catalog.type=rest" \ --conf "spark.sql.catalog.spark_catalog.uri=https://s3tables.<Region>.amazonaws.com/iceberg" \ --conf "spark.sql.catalog.spark_catalog.warehouse=arn:aws:s3tables:<Region>:<accountID>:bucket/<bucketname>" \ --conf "spark.sql.catalog.spark_catalog.rest.sigv4-enabled=true" \ --conf "spark.sql.catalog.spark_catalog.rest.signing-name=s3tables" \ --conf "spark.sql.catalog.spark_catalog.rest.signing-region=<Region>" \ --conf "spark.sql.catalog.spark_catalog.io-impl=org.apache.iceberg.aws.s3.S3FileIO" \ --conf "spark.hadoop.fs.s3a.aws.credentials.provider=org.apache.hadoop.fs.s3a.SimpleAWSCredentialProvider" \ --conf "spark.sql.catalog.spark_catalog.rest-metrics-reporting-enabled=false"

Authentifizierung und Autorisierung des Zugriffs auf den Endpunkt

API-Anfragen an die S3-Tables-Dienstendpunkte werden mit AWS Signature Version 4 (Sigv4) authentifiziert. Weitere Informationen zu AWS Sigv4 finden Sie unter Signature Version 4 für API-Anfragen. AWS

Der SigV4-Signaturname für Amazon S3 S3-Tabellen Iceberg REST Endpunktanfragen sind: s3tables

Anfragen an die Amazon S3-Tabellen Iceberg REST Endpunkte werden mithilfe von s3tables IAM-Aktionen autorisiert, die den REST API-Operationen. Diese Berechtigungen können entweder in identitätsbasierten IAM-Richtlinien oder in ressourcenbasierten Richtlinien definiert werden, die an Tabellen und Tabellen-Buckets angehängt sind. Weitere Informationen finden Sie unter Zugriffsverwaltung für S3 Tables.

Sie können Anfragen, die an Ihre Tabellen gestellt wurden, über die REST Endpunkt mit AWS CloudTrail. Anfragen werden als entsprechende S3-IAM-Aktion protokolliert. Beispielsweise generiert eine LoadTable API ein Verwaltungsereignis für den GetTableMetadataLocation Vorgang und ein Datenereignis für den GetTableData Vorgang. Weitere Informationen finden Sie unter Loggen mit AWS CloudTrail für S3-Tabellen.

Präfix- und Pfadparameter

Iceberg REST Kataloge APIs haben in ihrer Anfrage URLs ein Präfix in freier Form. Beispielsweise verwendet der ListNamespaces API-Aufruf das GET/v1/{prefix}/namespaces URL-Format. Für S3-Tabellen {prefix} ist der REST-Pfad immer Ihr URL-kodierter Tabellen-Bucket-ARN.

Für den folgenden Tabellen-Bucket ARN: wäre arn:aws:s3tables:us-east-1:111122223333:bucket/bucketname das Präfix beispielsweise: arn%3Aaws%3As3tables%3Aus-east-1%3A111122223333%3Abucket%2Fbucketname

Parameter für den Namespace-Pfad

Namespaces in einem Iceberg REST Der API-Pfad für den Katalog kann mehrere Ebenen haben. S3-Tabellen unterstützen jedoch nur Namespaces mit einer Ebene. Um auf einen Namespace in einer mehrstufigen Kataloghierarchie zuzugreifen, können Sie beim Verweisen auf den Namespace eine Verbindung zu einem mehrstufigen Katalog herstellen, der über dem Namespace liegt. Auf diese Weise kann jede Abfrage-Engine, die die dreiteilige Notation unterstützt, im Vergleich catalog.namespace.table zur Verwendung des mehrstufigen Namespaces ohne Kompatibilitätsprobleme auf Objekte in der Kataloghierarchie von S3-Tabellen zugreifen.

Unterstützt Iceberg REST API-Operationen

Die folgende Tabelle enthält die unterstützten Iceberg-REST-Dateien APIs und wie sie den Aktionen in S3-Tabellen entsprechen.

Iceberg-REST-Betrieb REST-Pfad IAM-Aktion für S3-Tabellen CloudTrail EventName

getConfig

GET /v1/config

s3tables:GetTableBucket

s3tables:GetTableBucket

listNamespaces

GET /v1/{prefix}/namespaces

s3tables:ListNamespaces

s3tables:ListNamespaces

createNamespace

POST /v1/{prefix}/namespaces

s3tables:CreateNamespace

s3tables:CreateNamespace

loadNamespaceMetadata

GET /v1/{prefix}/namespaces/{namespace}

s3tables:GetNamespace

s3tables:GetNamespace

dropNamespace

DELETE /v1/{prefix}/namespaces/{namespace}

s3tables:DeleteNamespace

s3tables:DeleteNamespace

listTables

GET /v1/{prefix}/namespaces/{namespace}/tables

s3tables:ListTables

s3tables:ListTables

createTable

POST /v1/{prefix}/namespaces/{namespace}/tables

s3tables:CreateTable, s3tables:PutTableData

s3tables:CreateTable, s3tables:PutObject

loadTable

GET /v1/{prefix}/namespaces/{namespace}/tables/{table}

s3tables:GetTableMetadataLocation, s3tables:GetTableData

s3tables:GetTableMetadataLocation, s3tables:GetObject

updateTable

POST /v1/{prefix}/namespaces/{namespace}/tables/{table}

s3tables:UpdateTableMetadataLocation, s3tables:PutTableData, s3tables:GetTableData

s3tables:UpdateTableMetadataLocation, s3tables:PutObject, s3tables:GetObject

dropTable

DELETE /v1/{prefix}/namespaces/{namespace}/tables/{table}

s3tables:DeleteTable

s3tables:DeleteTable

renameTable

POST /v1/{prefix}/tables/rename

s3tables:RenameTable

s3tables:RenameTable

tableExists

HEAD /v1/{prefix}/namespaces/{namespace}/tables/{table}

s3tables:GetTable

s3tables:GetTable

namespaceExists

HEAD /v1/{prefix}/namespaces/{namespace}

s3tables:GetNamespace

s3tables:GetNamespace

Überlegungen und Einschränkungen

Im Folgenden finden Sie Überlegungen und Einschränkungen bei der Verwendung der Amazon S3 S3-Tabellen Iceberg REST Endpunkt.

Überlegungen
  • CreateTable API-Verhalten — Die stage-create Option wird für diesen Vorgang nicht unterstützt und führt zu einem 400 Bad Request Fehler. Das bedeutet, dass Sie mit CREATE TABLE AS SELECT (CTAS) keine Tabelle aus Abfrageergebnissen erstellen können.

  • DeleteTable API-Verhalten — Sie können nur Tabellen löschen, wenn das Löschen aktiviert ist. Das Löschen von Tabellen mit purge=false wird nicht unterstützt und führt zu einem 400 Bad Request Fehler. Einige Versionen von Spark setze dieses Flag immer auf False, auch wenn DROP TABLE PURGE Befehle ausgeführt werden. Sie können versuchen, eine Tabelle mit der DeleteTableOperation S3-Tabellen zu löschen, DROP TABLE PURGE oder sie verwenden.

  • Der Endpunkt unterstützt nur Standardoperationen mit Tabellenmetadaten. Verwenden Sie für die Tabellenverwaltung, z. B. die Verwaltung und Komprimierung von Snapshots, API-Operationen zur Wartung von S3-Tabellen. Weitere Informationen finden Sie unter Wartung von S3 Tables.

Einschränkungen
  • Mehrstufige Namespaces werden nicht unterstützt.

  • OAuthDie basierte Authentifizierung wird nicht unterstützt.

  • Nur die owner Eigenschaft wird für Namespaces unterstützt.

  • View-bezogen APIs , definiert in Apache Iceberg REST Open-API-Spezifikationen werden nicht unterstützt.

  • Das Ausführen von Operationen an einer Tabelle mit einer metadata.json Datei über 5 MB wird nicht unterstützt und es wird ein 400 Bad Request Fehler zurückgegeben. Verwenden Sie Tabellenverwaltungsoperationen, um die Größe Ihrer metadata.json Dateien zu kontrollieren. Weitere Informationen finden Sie unter Wartung von S3 Tables.