Verwenden Sie vom Katalog automatisch erzeugte Anmeldeinformationen für Apache Iceberg™-Tabellen¶
Mit der Unterstützung von automatisch erzeugten Anmeldeinformationen für Iceberg-Tabellen können Sie Snowflake Zugriff auf Ihre Tabellendaten und Metadaten im Cloud-Speicher geben, ohne ein externes Volume zu verwenden.
Stattdessen konfigurieren und delegieren Sie die Zugriffssteuerung mit dem Iceberg REST-Katalog eines Drittanbieters (z. B. Snowflake Open Catalog) und erstellen dann eine Katalogintegration in Snowflake, die für automatisch erzeugte Anmeldeinformationen konfiguriert ist. Für jede Iceberg-Tabelle, die mit der Katalogintegration verknüpft ist, verwendet Snowflake die von Ihrem Kataloganbieter bereitgestellten Anmeldeinformationen, um eine sichere Verbindung zu Ihrem externen Cloud-Speicher herzustellen.
Bemerkung
Die Verwendung von im Katalog automatisch erzeugten Anmeldeinformationen wird für extern verwaltete Iceberg-Tabellen unterstützt, die eine REST-Katalogintegration verwenden und ihre Dateien in Amazon S3 speichern. Um dieses Feature nutzen zu können, muss Ihr externer Katalog auch die automatische Erzeugung von Anmeldeinformationen unterstützen.
Hinweise¶
Beachten Sie Folgendes, wenn Sie im Katalog automatisch erzeugte Anmeldeinformationen für Iceberg-Tabellen verwenden:
Dieses Feature wird nur für Tabellen unterstützt, die ihre Daten und Metadaten in Amazon S3 speichern.
Tabellendateien müssen in einem einzigen Bucket gespeichert werden; sie können nicht auf mehrere Buckets verteilt werden.
Der mit Ihrem REST-Katalog konfigurierte Dienstprinzipal muss die Berechtigung haben, von allen Speicherorten zu lesen, die Ihre Tabellendateien in Ihrem Bucket enthalten. Wenn Sie AWS Lake-Formation mit AWS Glue verwenden, müssen Sie möglicherweise zusätzliche Schritte ausführen, um diesen Zugriff zu aktivieren. Weitere Informationen dazu finden Sie unter (Optional) Zugriffssteuerung für Lake Formation konfigurieren.
Snowflake erwartet, dass Ihr Katalog eine Ablaufzeit für automatisch erzeugte Anmeldeinformationen angibt, und sucht nach einem Schlüssel-Wert-Paar, bei dem der Schlüssel
expiration-time
und der Wert ein Zeitstempel ist, der die Ablaufzeit in Millisekunden angibt (zum Beispiel1730234407000
).Wenn Ihr Katalog keine Ablaufzeit angibt, geht Snowflake davon aus, dass die Anmeldeinformationen 60 Minuten nach Erhalt ablaufen.
Die Tabellenerstellung schlägt fehl, wenn Ihr Katalog ungültige Anmeldeinformationen angibt.
Die Datenfreigabe wird nicht unterstützt.
Katalogintegration für automatisch erzeugte Anmeldeinformationen erstellen¶
Um eine Katalogintegration für automatisch erzeugte Anmeldeinformationen zu erstellen, verwenden Sie den Befehl CREATE CATALOG INTEGRATION (Apache Iceberg™ REST) mit der ACCESS_DELEGATION_MODE
-Eigenschaft, die auf VENDED_CREDENTIALS
eingestellt ist.
Wobei:
ACCESS_DELEGATION_MODE = {VENDED_CREDENTIALS | EXTERNAL_VOLUME_CREDENTIALS}
den Zugriffsdelegierungsmodus angibt, der für den Zugriff auf Iceberg-Tabellendateien in Ihrem externen Cloud-Speicher verwendet werden soll.
VENDED_CREDENTIALS
festlegt, dass Snowflake automatisch erzeugte Anmeldeinformationen verwenden soll.EXTERNAL_VOLUME_CREDENTIALS
festlegt, dass Snowflake ein externes Volume verwenden soll.
Standard:
EXTERNAL_VOLUME_CREDENTIALS
Sie können die Eigenschaft ACCESS_DELEGATION_MODE
in der Liste der REST_CONFIG
-Eigenschaften in einer beliebigen CREATE CATALOG INTEGRATION (Apache Iceberg™ REST)-Anweisung angeben. Die folgenden Themen enthalten Beispiele für die häufigsten Anwendungsfälle:
Snowflake Open Catalog. Diese Anweisungen gelten auch für Apache Polaris™.
Wichtig
Wenn Sie AWS Lake Formation für die Zugriffssteuerung verwenden, müssen Sie sicherstellen, dass Snowflake auf Ihren AWS Glue-Katalog oder auf Ihre Amazon S3-Tabelle zugreifen kann. Weitere Informationen dazu finden Sie unter (Optional) Zugriffssteuerung für Lake Formation konfigurieren.
Beispiel: AWS Glue¶
Das folgende Beispiel erstellt eine Katalogintegration für AWS Glue, das automatisch erzeugte Anmeldeinformationen verwendet. Weitere Informationen dazu finden Sie unter Konfigurieren Sie eine Katalogintegration für AWS Glue Iceberg REST.
CREATE CATALOG INTEGRATION glue_rest_catalog_int
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = 'rest_catalog_integration'
REST_CONFIG = (
CATALOG_URI = 'https://glue.us-west-2.amazonaws.com/iceberg'
CATALOG_API_TYPE = AWS_GLUE
CATALOG_NAME = '123456789012'
ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
)
REST_AUTHENTICATION = (
TYPE = SIGV4
SIGV4_IAM_ROLE = 'arn:aws:iam::123456789012:role/my-role'
SIGV4_SIGNING_REGION = 'us-west-2'
)
ENABLED = TRUE;
Beispiel: Amazon S3-Tabellen¶
In diesem Beispiel wird eine Katalogintegration für Amazon S3-Tabellen mit in SigV4 aktivierter automatischer Erzeugung von Anmeldeinformationen unter Verwendung von Lake Formation erstellt.
CREATE OR REPLACE CATALOG INTEGRATION my_s3_tables_catalog_integration
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = 'my_namespace'
REST_CONFIG = (
CATALOG_URI = 'https://glue.us-west-2.amazonaws.com/iceberg'
CATALOG_API_TYPE = AWS_GLUE
CATALOG_NAME = '123456789012:S3tablescatalog/my_table_bucket'
ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
)
REST_AUTHENTICATION = (
TYPE = SIGV4
SIGV4_IAM_ROLE = 'arn:aws:iam::123456789012:role/my_api_permissions_role'
)
ENABLED = TRUE;
Wobei:
CATALOG_URI = 'https://glue.us-west-2.amazonaws.com/iceberg'
Gibt den AWS Glue Iceberg REST-Endpunkt an.
CATALOG_NAME = 'aws_account_id:s3tablescatalog/s3_table_bucket
Gibt einen S3-Tabellen-Bucket in Ihrem AWS-Konto an.
Iceberg-Tabelle erstellen, die automatisch erzeugte Anmeldeinformationen verwendet¶
Nachdem Sie die Zugriffssteuerung mit dem Iceberg REST-Katalog eines Drittanbieters eingerichtet und eine Katalogintegration für automatisch erzeugte Anmeldeinformationen erstellt haben, können Sie eine Iceberg-Tabelle erstellen.
Wenn Sie eine Iceberg-Tabelle erstellen, die automatisch erzeugte Anmeldeinformationen verwendet, geben Sie eine Katalogintegration an, die mit ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
konfiguriert ist, und schließen Sie den Parameter EXTERNAL_VOLUME
von der CREATE ICEBERG TABLE (Iceberg REST Katalog)-Anweisung aus.
Beispiel:
CREATE ICEBERG TABLE my_iceberg_table
CATALOG = open_catalog_int_vended_credentials
CATALOG_TABLE_NAME = 'my_table'
AUTO_REFRESH = TRUE;
Bemerkung
Wenn Sie ein externes Standardvolumen auf Konto-, Datenbank- oder Schemaebene festgelegt haben, ignoriert Snowflake das externe Standardvolumen bei der Tabellenerstellung, solange Sie eine Katalogintegration angeben, die für die Verwendung von automatisch erzeugten Anmeldeinformationen konfiguriert ist.