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;
Copy

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.

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 an die IAM-Rolle anhängen und die von AWS für die Rolle generierten Sicherheitsanmeldeinformationen verwenden, um auf Dateien im Bucket 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>"
         ]
      }
   ]
}
Copy

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 finden Sie unter Von AWS Glue definierte Ressourcentypen

  • Wenn 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;
Copy

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;
Copy

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

Folgen Sie den Anweisungen unter Ändern einer Vertrauensrichtlinie, um die in Schritt 3: AWS-IAM-Benutzer und externe ID für Ihr Snowflake-Konto abrufen erfassten Werte zur Vertrauensrichtlinie für Ihre IAM-Rolle hinzuzufügen.

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>"
         }
      }
      }
   ]
}
Copy

Wobei:

  • glue_iam_user_arn ist der Wert GLUE_IAM_USER_ARN, den Sie erfasst haben.

  • glue_aws_external_id ist der Wert GLUE_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.