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 Dienstprinzipal, der mit Ihrem REST-Katalog konfiguriert ist, muss die Berechtigung haben, aus allen Speicherorten zu lesen, die Ihre Tabellendateien in Ihrem Bucket enthalten.
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), wobei der Parameter ACCESS_DELEGATION_MODE
auf VENDED_CREDENTIALS
gesetzt 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
Weitere Informationen zur Erstellung einer REST-Katalogintegration finden Sie unter Konfigurieren Sie eine Katalogintegration für Apache Iceberg™ REST-Kataloge oder Katalogintegration für Snowflake Open Catalog.
Beispiel: Snowflake Open Catalog¶
Das folgende Beispiel erstellt eine Katalogintegration für Snowflake Open Catalog unter Verwendung von automatisch erzeugten Anmeldeinformationen:
CREATE OR REPLACE CATALOG INTEGRATION open_catalog_int_vended_credentials
CATALOG_SOURCE = POLARIS
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = 'my-namespace'
REST_CONFIG = (
CATALOG_URI = 'https://myrestapi.com/polaris/api/catalog'
CATALOG_NAME = 'my_catalog_name'
ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
)
REST_AUTHENTICATION = (
TYPE = OAUTH
OAUTH_CLIENT_ID = 'my_client_id'
OAUTH_CLIENT_SECRET = 'my_client_secret'
OAUTH_ALLOWED_SCOPES = ('PRINCIPAL_ROLE:ALL')
)
ENABLED = TRUE;
Beispiel: SigV4 und Amazon API Gateway¶
In diesem Beispiel wird eine Katalogintegration erstellt, die SigV4-Authentifizierung mit automatisch erzeugten Anmeldeinformationen verwendet:
CREATE OR REPLACE CATALOG INTEGRATION my_rest_catalog_integration
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = 'my_namespace'
REST_CONFIG = (
CATALOG_URI = 'https://asdlkfjwoalk-execute-api.us-west-2-amazonaws.com/MyApiStage'
ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
)
REST_AUTHENTICATION = (
TYPE = SIGV4
SIGV4_IAM_ROLE = 'arn:aws:iam::123456789012:role/my_api_permissions_role'
)
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, müssen Sie eine mit ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
konfigurierte Katalogintegration angeben und den Parameter EXTERNAL_VOLUME
in der Anweisung CREATE ICEBERG TABLE (Iceberg REST Katalog) weglassen.
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.