Zum Inhalt springen

Amazon S3 Tables

Die Unterstützung für S3 Tables ist derzeit experimentell.

Die iceberg-Erweiterung unterstützt das Lesen von Iceberg-Tabellen, die in Amazon S3 Tables gespeichert sind.

Voraussetzungen

Installieren Sie die folgenden Erweiterungen:

INSTALL aws;
INSTALL httpfs;
INSTALL iceberg;

Verbindung mit Amazon S3 Tables

Sie können DuckDB Ihre AWS-Anmeldedaten und -Konfiguration anhand des Standardprofils in Ihrem Verzeichnis ~/.aws erkennen lassen, indem Sie mit dem Secrets Manager folgendes Secret anlegen:

CREATE SECRET (
TYPE s3,
PROVIDER credential_chain
);

Alternativ können Sie die Werte manuell setzen:

CREATE SECRET (
TYPE s3,
KEY_ID '⟨key_id⟩',
SECRET '⟨secret⟩',
REGION '⟨region⟩'
);

Die vollständige Palette der Anmeldedaten-Optionen (angenommene Rollen, SSO, Web Identity und mehr) finden Sie in der aws-Erweiterung.

Verbinden Sie sich anschließend mit dem Katalog über Ihre S3-Tables-ARN (verfügbar in der AWS Management Console) und die Option ENDPOINT_TYPE s3_tables:

ATTACH '⟨s3_tables_arn⟩' AS my_s3_tables_catalog (
TYPE iceberg,
ENDPOINT_TYPE s3_tables
);

Warning ENDPOINT_TYPE s3_tables baut immer einen Endpunkt der Form s3tables.⟨region⟩.amazonaws.com/iceberg. Das ist für jede Region falsch, deren Endpunkt nicht das einfache Suffix amazonaws.com verwendet — insbesondere die AWS-China-Regionen (cn-north-1, cn-northwest-1), die amazonaws.com.cn verwenden. Für solche Regionen hängen Sie den Katalog an, indem Sie einen expliziten ENDPOINT (mit dem richtigen Host für Ihre Region) zusammen mit AUTHORIZATION_TYPE 'sigv4' übergeben, statt ENDPOINT_TYPE zu verwenden.

Um zu prüfen, ob das Anhängen funktioniert hat, listen Sie alle Tabellen auf:

SHOW ALL TABLES;

Sie können eine Tabelle wie folgt abfragen:

SELECT count(*)
FROM my_s3_tables_catalog.⟨namespace_name⟩.⟨table_name⟩;

S3 Tables ist ein Iceberg REST Catalog. Die vollständige Liste der ATTACH-Optionen — und Details zu den Kompatibilitätsflags — finden Sie unter Iceberg REST Catalogs.