Problembehandlung bei Ladeoperationen aus Google Cloud Storage

Unter diesem Thema finden Sie Anweisungen zur Behebung von Problemen, die beim Laden von Daten aus Google Cloud Storage-Stagingbereichen auftreten können.

Allgemeine Schritte zur Problembehandlung beim Laden von Daten finden Sie unter Problembehandlung beim Laden von Massendaten.

Unter diesem Thema:

Fehler bei der Verwendung von Stagingbereichen

Beim Versuch, Daten aus einem Google Cloud Storage (GCS)-Bucket zu laden, kann der folgende Fehler auftreten:

Failure using stage area. Cause: [Request violates VPC Service Controls. (Status Code: 403)]
Copy

Dieser Fehler weist auf einen Verstoß gegen die Einschränkungen für einen GCP-Dienstperimeter hin, der mithilfe von VPC Service Controls zum Sichern vertraulicher Daten konfiguriert wurde. Obwohl dem für Ihr Snowflake-Konto erstellten GCS-Dienstkonto möglicherweise die Berechtigung zum Lesen und Schreiben in den Bucket erteilt wurde, werden die Zugriffsregeln für den Dienstperimeter auf GCP-Organisationsebene angewendet und betreffen potenziell mehrere Projekte. Greifen Sie auf die Fehlerprotokolle der VPCService Controls zu, um weitere Details zu der Fehlermeldung zu erhalten. In der GCP-Dokumentation finden Sie Beschreibungen zu den violationReason-Werten in den Protokollen.

Die einfachste Möglichkeit, den Fehler zu beheben, besteht darin, Daten aus einem Bucket zu laden, der vom Dienstperimeter ausgeschlossen ist. Wenn diese Option von Ihren festgelegten Sicherheitsregeln nicht zugelassen wird, können Sie das GCS-Dienstkonto für Ihr Snowflake-Konto aus den Dienstperimeterfiltern ausschließen, indem Sie das Dienstkonto einer Zugriffsrichtlinie hinzufügen. Beachten Sie, dass das Dienstkonto weiterhin den Zugriff auf genehmigte Ressourcen unter Verwendung der in den Anweisungen zum Konfigurieren der Integration mit GCS beschriebenen IAM-Standardrichtlinie erfordert.

Die Zugriffsrichtlinie für eine GCP-Organisation enthält Zugriffsebenen. Zugriffsebenen werden mit dem Access Context Manager und entweder der Google Cloud Console, dem gcloud-Befehlszeilentool oder der Cloud-API erstellt und verwaltet. Die folgenden Anweisungen stützen sich auf das Befehlszeilentool gcloud.

So fügen Sie das GCS-Dienstkonto Ihres Snowflake-Konto einer Richtlinie auf Zugriffsebene hinzu:

  1. Verwenden Sie den Snowflake-Client, um die ID des Cloud Storage-Dienstkontos abzurufen, das automatisch für Ihr Snowflake-Konto erstellt wurde (mit DESCRIBE INTEGRATION):

    DESC STORAGE INTEGRATION <integration_name>;
    
    Copy

    Dabei ist integration_name der Name einer Speicherintegration in Ihrem Konto. Weitere Informationen dazu finden Sie unter Konfigurieren einer Integration für Google Cloud Storage.

  2. Erstellen Sie auf Ihrem lokalen Computer eine Datei mit dem Namen snowflake_policy.yaml. Geben Sie die Dienstkonto-ID im Attribut members an:

    - members:
       - serviceAccount:<service_account>
    
    Copy

    Beispiel:

    - members:
       - serviceAccount:service-account-id@project1-123456.iam.gserviceaccount.com
    
    Copy
  3. Führen Sie mit dem Befehlszeilentool gcloud den folgenden Befehl aus, um eine Zugriffsebene zu erstellen.

    Bemerkung

    Für diesen Befehl ist eine GCP-Rolle mit den erforderlichen Berechtigungen zum Ändern von VCP Service Controls erforderlich.

    gcloud access-context-manager levels create <access_level_name> \
       --title snowflake \
       --basic-level-spec snowflake_policy.yaml \
       --combine-function=OR \
       --policy=<policy_name>
    
    Copy

Wobei:

  • policy_name ist der Name der Zugriffsrichtlinie Ihrer GCP-Organisation.

  • access_level_name ist der Name Ihrer Wahl für die Zugriffsebene.