Fehlersuche bei der Verwendung von Apache Iceberg™-Tabellen mit Snowflake Open Catalog in Snowflake

Die folgenden Szenarios können Ihnen bei der Behebung von Problemen helfen, die bei der Verwendung von Apache Iceberg™-Tabellen mit Snowflake Open Catalog in Snowflake auftreten können.

Sie können keine Katalogintegration für Open Catalog erstellen

Dieser Abschnitt beschreibt die Problembehandlung bei der Erstellung einer Katalogintegration für Open Catalog.

Identifizieren Sie zur Problembehandlung die Fehlermeldung, die Sie in der SQL-Ausgabe erhalten haben, als Ihre Katalogintegration nicht erstellt werden konnte.

Fehler

SQL Execution Error: Cannot create catalog integration <catalog_integration_name> due to error: Unable to process: Unable to find
warehouse <catalog_name>. Check the REST configuration and ensure the warehouse name '<catalog_name>' matches the Polaris catalog
name.

Ursache

Der <open_catalog_name>, den Sie für den Parameter WAREHOUSE in Ihrer Katalogintegration angegeben haben, stimmt nicht mit dem Namen eines externen Katalogs im Open Catalog-Konto unter <polaris_account_url> überein, den Sie für den Parameter CATALOG_URI angegeben haben.

Lösung

Aktualisieren Sie <open_catalog_name> für den Parameter WAREHOUSE so, dass er genau dem Namen des externen Katalogs in Open Catalog entspricht, und versuchen Sie erneut, die Katalogintegration zu erstellen. Wenn Sie den externen Katalog noch nicht erstellt haben, folgen Sie den Anweisungen unter Katalog erstellen.

Wichtig

<open_catalog_name> unterscheidet Groß- und Kleinschreibung.

Fehler

SQL Execution Error: User provided authentication credentials are invalid for catalog integration <catalog_integration_name> due
to error: Malformed request: unauthorized_client: The client is not authorized.

Ursache

Das OAuth-Token, das Sie in der Katalogintegration angegeben haben, ist ungültig.

Lösung

Vergewissern Sie sich, dass die für OAUTH_CLIENT_ID und OAUTH_CLIENT_SECRET angegebenen Werte in Ihrer Katalogintegration gültige Werte für eine bestehende Dienstverbindung sind. Zur Überprüfung vergleichen Sie diese Werte mit den Anmeldeinformationen für den Dienst, die Sie bei der Konfiguration der Verbindung gespeichert haben. Wenn sie nicht übereinstimmen, aktualisieren Sie die Werte, damit sie übereinstimmen.

Sie können keine von Snowflake verwaltete Tabelle erstellen

In diesem Abschnitt wird die Fehlerbehebung bei der Erstellung einer von Snowflake verwalteten Tabelle beschrieben.

Um das Problem zu beheben, identifizieren Sie die Fehlermeldung, die Sie in der SQL-Ausgabe von erhalten haben, als Ihre Tabelle nicht erstellt werden konnte.

Fehler

SQL Execution Error: Failed to validate CATALOG_SYNC target '<catalog_integration_name>' due to error: The Snowflake service
connection associated with the Polaris catalog integration does not have the required privileges to send notifications. The
minimum required privileges are TABLE_CREATE, TABLE_WRITE_PROPERTIES, TABLE_DROP, NAMESPACE_CREATE, and NAMESPACE_DROP.

Ursache

Die Katalogrolle für den externen Katalog, mit dem Sie eine Verbindung herstellen möchten, hat nicht die erforderlichen Berechtigungen, um Benachrichtigungen an Open Catalog zu senden.

Lösung

Aktualisieren Sie die Katalogrolle, indem Sie der Katalogrolle für Ihren externen Katalog alle folgenden Berechtigungen erteilen:

  • TABLE_CREATE

  • TABLE_WRITE_PROPERTIES

  • TABLE_DROP

  • NAMESPACE_CREATE

  • NAMESPACE_DROP

Wo Sie die Katalogrolle aktualisieren, hängt davon ab, ob die darin enthaltenen Berechtigungen auf Katalog-, Namespace- oder Tabellenebene angewendet werden. Siehe die für Ihre Katalogrolle anwendbare Prozedur:

Fehler

SQL Execution Error: Failed to access the REST endpoint of catalog integration <catalog_integration_name> with error: Unable to
process: Failed to get subscoped credentials: Error assuming AWS_ROLE:
User: <IAM_user_arn> is not authorized to perform: sts:AssumeRole on resource: <S3_role_arn>. Check the accessibility of the REST
catalog URI or warehouse.

Ursache

Der AWS IAM-Benutzer für Ihren externen Katalog ist nicht in der Lage, die Rolle zu übernehmen, die die Berechtigung zum Zugriff auf S3 hat.

Lösung

Ändern Sie das Richtliniendokument in AWS, um dem IAM-Benutzer für Ihr Open Catalog Konto die Möglichkeit zu geben, die Rolle zu übernehmen, die über die Berechtigung zum Zugriff auf Ihren S3-Bucket verfügt. Um das Richtliniendokument zu ändern, müssen Sie die IAM-Rolle in AWS aktualisieren. Details finden Sie unter AWS IAM Den Benutzer für Ihr Snowflake Open Catalog-Konto abrufen und dann Dem IAM-Benutzer Berechtigungen für den Zugriff auf Bucket-Objekte erteilen.

Beachten Sie, dass das Richtliniendokument den IAM ARN-Benutzer und die externen ID sowohl für Ihr externes Volume als auch für Ihren externen Katalog in Open Catalog enthalten muss. Beachten Sie im folgenden Beispiel-Richtliniendokument die folgenden Werte:

  • arn:aws:iam::111111111111:user/----0000-s ist die STORAGE_AWS_IAM_USER_ARN für das externe Volume.

  • arn:aws:iam::222222222222:user/----0000-s ist der IAM ARN-Benutzer für den externen Katalog in Snowflake Open Catalog.

  • Iceberg_table_external_id is the STORAGE_AWS_EXTERNAL_ID für Ihr externes Volume und auch die externe ID für Ihren externen Katalog in Open Catalog.

    {
         "Version": "2012-10-17",
         "Statement": [
           {
             "Sid": "",
             "Effect": "Allow",
             "Principal": {
               "AWS": [
                   "arn:aws:iam::111111111111:user/----0000-s",
                   "arn:aws:iam::222222222222:user/----0000-s"
                ]
             },
             "Action": "sts:AssumeRole",
             "Condition": {
               "StringEquals": {
                 "sts:ExternalId": "iceberg_table_external_id"
               }
             }
           }
         ]
       }
    
    Copy

Fehler

SQL Execution Error: Failed to validate CATALOG_SYNC target '<catalog_integration_name>' due to error: The associated Polaris
catalog cannot be of type INTERNAL.

Ursache

Sie versuchen, eine von Snowflake verwaltete Tabelle mit einem internen Katalog in Open Catalog zu synchronisieren. Sie können eine von Snowflake verwaltete Tabelle nur mit einem externen Katalog in Open Catalog synchronisieren.

Lösung

Sie können einen bestehenden internen Katalog nicht in einen externen Katalog aktualisieren, sondern müssen einen neuen externen Katalog erstellen:

  1. Folgen Sie den Anweisungen unter Katalog erstellen, um einen externen Katalog in Ihrem Open Catalog-Konto zu erstellen. Vergewissern Sie sich bei der Erstellung des Katalogs, dass das Kontrollkästchen „Extern“ aktiviert ist.

  2. Aktualisieren Sie <open_catalog_name> für den Parameter WAREHOUSE in Ihrer Katalogintegration auf den Namen des von Ihnen erstellten externen Katalogs.

Fehler

SQL Execution Error: Failed to validate CATALOG_SYNC target '<catalog_integration_name>' due to error: SQL Execution Error:
Resource on the REST endpoint of catalog integration CATINT is forbidden due to error: Forbidden: Invalid locations '[<path to metadata file>]'
for identifier '<identifier>': <path to metadata file> is not in the list of allowed locations: [<list of allowed locations>].

Ursache

Der Pfad zur Metadatendatei für die Tabelle, die Sie erstellen möchten, ist nicht in der Liste der zulässigen Speicherorte für Ihren externen Cloudanbieter enthalten. Daher kann Open Catalog nicht auf die Metadatendatei für die Tabelle zugreifen.

Lösung

Stellen Sie sicher, dass der Speicherort der Metadatendatei unter dem Pfad des standardmäßigen Speicherorts für den Katalog liegt, den der Service-Administrator in Open Catalog erstellt hat, oder dass er unter einem der zusätzlichen zulässigen Speicherorte liegt, falls zutreffend. Eine Liste der zulässigen Speicherorte erhalten Sie, wenn Sie den Katalog in Open Catalog auswählen und das Feld Standorte aufrufen.

Sie können eine Iceberg-Tabelle nicht ändern, wenn Sie den Parameter CATALOG_SYNC angeben

In diesem Abschnitt wird beschrieben, wie Sie den Parameter CATALOG_SYNC ändern können, um Fehler zu beheben.

Identifizieren Sie zur Problembehandlung die Fehlermeldung, die Sie in der SQL-Ausgabe erhalten haben, als Ihre Tabelle nicht geändert werden konnte.

Fehler

SQL Execution Error: Failed to validate CATALOG_SYNC target '<catalog_integration_name>' due to error: The Snowflake service
connection associated with the Polaris catalog integration does not have the required privileges to send notifications. The minimum
required privileges are TABLE_CREATE, TABLE_WRITE_PROPERTIES, TABLE_DROP, NAMESPACE_CREATE, and NAMESPACE_DROP.

Ursache

Die Katalogrolle für den externen Katalog, mit dem Sie eine Verbindung herstellen möchten, hat nicht die erforderlichen Berechtigungen, um Benachrichtigungen an Open Catalog zu senden.

Lösung

Erteilen Sie der Katalogrolle für Ihren externen Katalog alle der folgenden Berechtigungen:

  • TABLE_CREATE

  • TABLE_WRITE_PROPERTIES

  • TABLE_DROP

  • NAMESPACE_CREATE

  • NAMESPACE_DROP

Wo Sie die Katalogrolle aktualisieren, hängt davon ab, ob ihre Berechtigungen auf Katalog-, Namespace- oder Tabellenebene angewendet werden. Siehe die für Ihre Katalogrolle anwendbare Prozedur:

Fehler

SQL Execution Error: Failed to access the REST endpoint of catalog integration <catalog_integration_name> with error: Unable to
process: Failed to get subscoped credentials: Error assuming AWS_ROLE:
User: <IAM_user_arn> is not authorized to perform: sts:AssumeRole on resource: <S3_role_arn>. Check the accessibility of the REST
catalog URI or warehouse.

Ursache

Der AWS IAM-Benutzer für Ihren externen Katalog hat keine Berechtigung für den Zugriff auf S3-Bucket-Objekte.

Lösung

Ändern Sie das Richtliniendokument in AWS, damit der IAM-Benutzer für Ihr Open Catalog Konto auf Objekte in Ihrem S3-Bucket zugreifen kann. Um das Richtliniendokument zu ändern, müssen Sie die IAM-Rolle in AWS aktualisieren. Details finden Sie unter AWS IAM Den Benutzer für Ihr Polaris Open Catalog-Konto abrufen und dann Dem IAM-Benutzer Berechtigungen für den Zugriff auf Bucket-Objekte erteilen.

Beachten Sie, dass das Richtliniendokument den IAM ARN-Benutzer und die externen ID sowohl für Ihr externes Volume als auch für Ihren externen Katalog in Open Catalog enthalten muss. Beachten Sie im folgenden Beispiel-Richtliniendokument die folgenden Werte:

  • arn:aws:iam::111111111111:user/----0000-s ist die STORAGE_AWS_IAM_USER_ARN für das externe Volume.

  • arn:aws:iam::222222222222:user/----0000-s ist der IAM ARN-Benutzer für den externen Katalog in Snowflake Open Catalog.

  • Iceberg_table_external_id is the STORAGE_AWS_EXTERNAL_ID für Ihr externes Volume und auch die externe ID für Ihren externen Katalog in Open Catalog.

    {
         "Version": "2012-10-17",
         "Statement": [
           {
             "Sid": "",
             "Effect": "Allow",
             "Principal": {
               "AWS": [
                   "arn:aws:iam::111111111111:user/----0000-s",
                   "arn:aws:iam::222222222222:user/----0000-s"
                ]
             },
             "Action": "sts:AssumeRole",
             "Condition": {
               "StringEquals": {
                 "sts:ExternalId": "iceberg_table_external_id"
               }
             }
           }
         ]
       }
    
    Copy

Fehler

SQL Execution Error: Failed to validate CATALOG_SYNC target '<catalog_integration_name>' due to error: The associated Polaris
catalog cannot be of type INTERNAL.

Ursache

Sie versuchen, eine von Snowflake verwaltete Iceberg-Tabelle mit einer Katalogintegration für einen internen Katalog in Open Catalog zu synchronisieren. Sie können eine von Snowflake verwaltete Iceberg-Tabelle nur mit einem externen Katalog in Open Catalog synchronisieren.

Lösung

Sie können einen bestehenden internen Katalog nicht in einen externen Katalog aktualisieren, sondern müssen einen neuen externen Katalog erstellen:

  1. Folgen Sie den Anweisungen unter Katalog erstellen, um einen externen Katalog in Ihrem Open Catalog-Konto zu erstellen. Stellen Sie bei der Erstellung des Katalogs sicher, dass die Option External aktiviert ist.

  2. Aktualisieren Sie open_catalog_name für den Parameter WAREHOUSE in Ihrer Katalogintegration auf den Namen des von Ihnen erstellten externen Katalogs.

Fehler

SQL Execution Error: Failed to validate CATALOG_SYNC target '<catalog_integration_name>' due to error: SQL Execution Error:
Resource on the REST endpoint of catalog integration CATINT is forbidden due to error: Forbidden: Invalid locations '[<path to metadata file>]'
for identifier '<identifier>': <path to metadata file> is not in the list of allowed locations: [<list of allowed locations>].

Ursache

Der Pfad zur Metadatendatei für die Tabelle, die Sie erstellen möchten, ist nicht in der Liste der zulässigen Speicherorte für Ihren externen Cloudanbieter enthalten. Daher kann Open Catalog nicht auf die Metadatendatei für die Tabelle zugreifen.

Lösung

Stellen Sie sicher, dass der Speicherort der Metadatendatei unter dem Pfad des standardmäßigen Speicherorts für den Katalog liegt, den der Service-Administrator in Open Catalog erstellt hat, oder dass er unter einem der zusätzlichen zulässigen Speicherorte liegt, falls zutreffend. Eine List der zulässigen Speicherorte erhalten Sie, wenn Sie den Katalog in Open Catalog auswählen und das Feld Locations aufrufen.