Katalogintegration für Iceberg-Tabellen konfigurieren¶
Unter diesem Thema finden Sie die erforderlichen Informationen zum Erstellen und Konfigurieren einer Katalogintegration für Iceberg-Tabellen. Um eine Iceberg-Tabelle zu erstellen, die einen externen Iceberg-Katalog oder gar keinen Katalog verwendet, müssen Sie eine Katalogintegration angeben.
Bemerkung
Eine Katalogintegration ist nur dann erforderlich, wenn Sie eine schreibgeschützte Iceberg-Tabelle unter Verwendung eines externen Iceberg-Katalogs erstellen möchten. Sie benötigen keine Katalogintegration, um eine Iceberg-Tabelle zu erstellen, die Snowflake als Iceberg-Katalog verwendet. Um Snowflake als Katalog zu verwenden, setzen Sie den Parameter CATALOG
im Befehl CREATE ICEBERG TABLE auf SNOWFLAKE
.
Katalogintegration erstellen¶
Sie können eine Katalogintegration für Iceberg-Tabellen erstellen, indem Sie den Befehl CREATE CATALOG INTEGRATION verwenden.
Beispiel: Katalogintegration für Iceberg-Dateien im Objektspeicher erstellen¶
Mit der folgenden Beispielanweisung wird eine Katalogintegration für Iceberg-Metadaten erstellt, die sich an einem externen Cloudspeicherort befinden, indem OBJECT_STORE
als CATALOG_SOURCE
-Wert festgelegt wird.
CREATE OR REPLACE CATALOG INTEGRATION icebergCatalogInt
CATALOG_SOURCE=OBJECT_STORE
TABLE_FORMAT=ICEBERG
ENABLED=TRUE;
Nachdem Sie eine Katalogintegration erstellt haben, können Sie eine Iceberg-Tabelle erstellen.
Katalogintegration für AWS Glue konfigurieren¶
In diesem Abschnitt wird beschrieben, wie Sie eine Katalogintegration für AWS Glue erstellen und Snowflake eingeschränkten Zugriff auf den Amazon Glue-Datenkatalog gewähren können.
Schritt 1: Zugriffsberechtigungen für den AWS Glue-Datenkatalog konfigurieren
Schritt 3: AWS-IAM-Benutzer und externe ID für Ihr Snowflake-Konto abrufen
Schritt 4: IAM-Benutzerberechtigungen für den Zugriff auf den AWS Glue-Datenkatalog erteilen
Bemerkung
Um die Anweisungen in diesem Abschnitt auszuführen, müssen Sie in Amazon Web Services (AWS) die Berechtigung zum Erstellen und Verwalten von IAM-Richtlinien und -Rollen haben. Wenn Sie kein AWS-Administrator sind, bitten Sie Ihren AWS-Administrator, diese Aufgaben auszuführen.
Schritt 1: Zugriffsberechtigungen für den AWS Glue-Datenkatalog konfigurieren¶
Als bewährte Methode sollten Sie für den Zugriff auf den Glue-Datenkatalog eine neue IAM-Richtlinie für Snowflake erstellen. Sie können dann die Richtlinie in die IAM-Rolle einbinden und die von AWS für diese Rolle generierten Sicherheitsanmeldeinformationen verwenden, um auf Dateien im Katalog zuzugreifen. Eine Anleitung dazu finden Sie unter Erstellen von IAM-Richtlinien und Ändern von Rollenberechtigungsrichtlinien im AWS-Benutzerhandbuch für die Identitäts- und Zugriffsverwaltung.
Snowflake benötigt mindestens die folgenden Berechtigungen für den Glue-Datenkatalog, um über Tabellen auf Informationen zuzugreifen.
glue:GetTable
glue:GetTables
Die folgende Beispielrichtlinie (im JSON-Format) bietet die erforderlichen Berechtigungen für den Zugriff auf alle Tabellen in einer bestimmten Datenbank.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowGlueCatalogTableAccess",
"Effect": "Allow",
"Action": [
"glue:GetTable",
"glue:GetTables"
],
"Resource": [
"arn:aws:glue:*:<accountid>:table/*/*",
"arn:aws:glue:*:<accountid>:catalog",
"arn:aws:glue:*:<accountid>:database/<database-name>"
]
}
]
}
Bemerkung
Sie können das
Resource
-Element dieser Richtlinie ändern, um die zulässigen Ressourcen weiter einzuschränken (z. B. Katalog, Datenbanken oder Tabellen). Weitere Informationen dazu finden Sie unter Von AWS Glue definierte RessourcentypenWenn Sie die Verschlüsselung für AWS Glue verwenden, müssen Sie die Richtlinie ändern, um AWS-KMS-Berechtigungen (AWS Key Management Service) hinzuzufügen. Weitere Informationen dazu finden Sie unter Einrichten der Verschlüsselung in AWS Glue.
Schritt 2: Katalogintegration in Snowflake erstellen¶
Erstellen Sie mit dem Befehl CREATE CATALOG INTEGRATION eine Katalogintegration für den Glue-Datenkatalog.
Im folgenden Beispiel wird eine Katalogintegration erstellt, die eine AWS Glue-Katalogquelle verwendet. Das Beispiel gibt einen Wert für den optionalen Parameter GLUE_REGION
an.
CREATE CATALOG INTEGRATION glueCatalogInt
CATALOG_SOURCE=GLUE
CATALOG_NAMESPACE='my.catalogdb'
TABLE_FORMAT=ICEBERG
GLUE_AWS_ROLE_ARN='arn:aws:iam::123456789012:role/myGlueRole'
GLUE_CATALOG_ID='123456789012'
GLUE_REGION='us-east-2'
ENABLED=TRUE;
Schritt 3: AWS-IAM-Benutzer und externe ID für Ihr Snowflake-Konto abrufen¶
Um Informationen zu dem AWS-IAM-Benutzer und die externe ID abzurufen, die für Ihr Snowflake-Konto erstellt wurden, als Sie die Katalogintegration erstellt haben, führen Sie den Befehl DESCRIBE CATALOG INTEGRATION aus. Sie geben diese Informationen im nächsten Abschnitt an AWS weiter, um eine Vertrauensstellung einzurichten.
Der folgende Beispielbefehl beschreibt die im vorherigen Schritt erstellte Katalogintegration:
DESCRIBE CATALOG INTEGRATION glueCatalogInt;
Notieren Sie die folgenden Werte:
Wert
Beschreibung
GLUE_AWS_IAM_USER_ARN
Der AWS-IAM-Benutzer, der für Ihr Snowflake-Konto erstellt wurde, in diesem Beispiel
arn:aws:iam::123456789001:user/abc1-b-self1234
. Snowflake stellt genau einen IAM-Benutzer für Ihr gesamtes Snowflake-Konto bereit. Alle Glue-Katalogintegrationen in Ihrem Konto verwenden diesen IAM-Benutzer.
GLUE_AWS_EXTERNAL_ID
Die externe ID, die zum Herstellen einer vertrauenswürdigen Beziehung erforderlich ist.
Diese Werte werden Sie im nächsten Abschnitt angeben.
Schritt 4: IAM-Benutzerberechtigungen für den Zugriff auf den AWS Glue-Datenkatalog erteilen¶
Aktualisieren Sie die Vertrauensrichtlinie für die gleiche IAM-Rolle, die Sie beim Erstellen der Katalogintegration mit dem ARN angegeben haben (GLUE_AWS_ROLE_ARN
). Fügen Sie die Werte, die Sie sich in Schritt 3: AWS-IAM-Benutzer und externe ID für Ihr Snowflake-Konto abrufen notiert haben, der Vertrauensrichtlinie hinzu.
Eine Anleitung dazu finden Sie unter Ändern einer Vertrauensrichtlinie.
Das folgende Beispiel einer Vertrauensrichtlinie zeigt, wo die Werte GLUE_AWS_IAM_USER_ARN
und GLUE_AWS_EXTERNAL_ID
angegeben werden müssen:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "<glue_iam_user_arn>"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "<glue_aws_external_id>"
}
}
}
]
}
Wobei:
glue_iam_user_arn
ist der WertGLUE_IAM_USER_ARN
, den Sie erfasst haben.
glue_aws_external_id
ist der WertGLUE_AWS_EXTERNAL_ID
, den Sie erfasst haben.
Bemerkung
Wenn Sie aus Sicherheitsgründen eine neue Katalogintegration erstellen (oder eine vorhandene Katalogintegration mit der Syntax CREATE OR REPLACE CATALOG INTEGRATION neu erstellen), hat die neue Katalogintegration eine andere externe ID und kann die Vertrauensstellung nicht auflösen, es sei denn, Sie ändern die Vertrauensrichtlinie mit der neuen externen ID.
Um zu überprüfen, ob Ihre Berechtigungen korrekt konfiguriert sind, erstellen Sie eine Iceberg-Tabelle unter Verwendung dieser Katalogintegration. Snowflake prüft erst dann, ob Ihre Berechtigungen korrekt eingestellt sind, wenn Sie eine Iceberg-Tabelle erstellen, die auf diese Katalogintegration verweist.
Nächste Schritte¶
Nachdem Sie eine Katalogintegration für AWS Glue konfiguriert haben, können Sie mit Erstellen Sie eine Iceberg-Tabelle mit AWS Glue als Katalog fortfahren.
Um die Tabelle zu aktualisieren und sie mit Änderungen in AWS Glue synchron zu halten, verwenden Sie eine ALTER ICEBERG TABLE … REFRESH-Anweisung. Weitere Informationen dazu finden Sie unter Metadaten einer Iceberg-Tabelle aktualisieren, die AWS Glue als Katalog verwendet.
Katalogintegration auf Konto-, Datenbank- oder Schemaebene einstellen¶
Um zu definieren, welche vorhandene Katalogintegration für Iceberg-Tabellen verwendet werden soll, können Sie den Parameter CATALOG auf den folgenden Ebenen einstellen:
- Konto:
Kontoadministratoren können mit dem Befehl ALTER ACCOUNT die Parameter für das Konto festlegen. Wenn der Wert für das Konto festgelegt ist, verwenden alle Iceberg-Tabellen, die im Konto erstellt wurden und einen externen Katalog verwenden, standardmäßig diese Katalogintegration.
- Objekt:
Benutzer können den entsprechenden CREATE <Objekt>- oder ALTER <Objekt>-Befehl ausführen, um den Parameterwert von CATALOG auf Datenbank- oder Schema-Ebene zu überschreiben. Es wird die Deklaration mit dem kleinsten Geltungsbereich verwendet: Schema > Datenbank > Konto.
Zusätzlich zu den Mindestberechtigungen, die für das Ändern eines Objekts mit dem entsprechenden ALTER <Objekttyp>-Befehl erforderlich sind, muss eine Rolle die USAGE-Berechtigung für die Katalogintegration haben.
Beispiel¶
Mit der folgenden Anweisung wird eine Katalogintegration (shared_catalog_integration
) für eine Datenbank namens my_database_1
festgelegt:
ALTER DATABASE my_database_1
SET CATALOG = 'shared_catalog_integration';
Nachdem Sie eine Katalogintegration auf Datenbankebene festgelegt haben, können Sie eine Iceberg-Tabelle in dieser Datenbank erstellen, ohne eine Katalogintegration angeben zu müssen. Mit der folgenden Anweisung wird eine Iceberg-Tabelle aus Metadaten im Objektspeicher in my_database_1
erstellt, die die für die Datenbank festgelegte Standard-Katalogintegration (shared_catalog_integration
) verwendet.
CREATE ICEBERG TABLE my_iceberg_table
EXTERNAL_VOLUME='my_external_volume'
METADATA_FILE_PATH='path/to/metadata/v1.metadata.json';