Externes Volume für Google Cloud Storage konfigurieren

Gewähren Sie Snowflake eingeschränkten Zugriff auf einen Google Cloud Storage (GCS) Bucket unter Verwendung eines externen Volumes. Um ein externes Volume für Google Cloud Storage zu konfigurieren, können Sie SQL oder :ref:` Snowsight verwenden <label-configure_external_volume_gcs_create_snowsight>`.

Voraussetzungen

Bevor Sie ein externes Volume konfigurieren, benötigen Sie Folgendes:

  • Ein Google Cloud Storage Bucket.

  • Berechtigungen in Google Cloud zum Erstellen und Verwalten von IAM-Richtlinien und -Rollen. Wenn Sie kein Google Cloud-Administrator sind, bitten Sie Ihren Google Cloud-Administrator, diese Aufgaben auszuführen.

Um ein externes Volume zu konfigurieren, können Sie SQL oder Snowsight verwenden:

Ein externes Volume mit SQL konfigurieren

Schritt 1: Externes Volume in Snowflake erstellen

Erstellen Sie mit dem Befehl CREATE EXTERNAL VOLUME ein externes Volume.

Bemerkung

Dieser SQL-Befehl kann nur von Kontoadministratoren (d. h. Benutzer mit der Rolle ACCOUNTADMIN) ausgeführt werden.

Im folgenden Beispiel wird ein externes Volume erstellt, das genau einen GCS-Speicherort mit Verschlüsselung definiert:

CREATE EXTERNAL VOLUME my_gcs_external_volume
  STORAGE_LOCATIONS =
    (
      (
        NAME = 'my-us-west-2'
        STORAGE_PROVIDER = 'GCS'
        STORAGE_BASE_URL = 'gcs://mybucket1/path1/'
        ENCRYPTION=(TYPE='GCS_SSE_KMS' KMS_KEY_ID = '1234abcd-12ab-34cd-56ef-1234567890ab')
      )
    );
Copy

Schritt 2: GCS-Dienstkonto für Ihr Snowflake-Konto abrufen

Um die ID für das GCS-Dienstkonto abzurufen, die für Ihr Snowflake-Konto automatisch erstellt wurde, verwenden Sie den Befehl DESCRIBE EXTERNAL VOLUME. Geben Sie den Namen des externen Volumes an, das Sie zuvor erstellt haben.

Beispiel:

DESC EXTERNAL VOLUME my_gcs_external_volume;
Copy

Notieren Sie sich den Wert der Eigenschaft STORAGE_GCP_SERVICE_ACCOUNT in der Ausgabe (z. B. service-account-id@project1-123456.iam.gserviceaccount.com).

Snowflake stellt genau ein GCS-Dienstkonto für Ihr gesamtes Snowflake-Konto bereit. Alle externen GCS-Volumes verwenden dieses Dienstkonto.

Schritt 3: Dienstkontoberechtigungen für den Zugriff auf Bucket-Objekte erteilen

In diesem Schritt konfigurieren Sie IAM-Zugriffsberechtigungen für Snowflake in Ihrer Google Cloud console.

Kundenspezifische IAM-Rolle erstellen

Erstellen Sie eine kundenspezifische Rolle, die über die erforderlichen Berechtigungen verfügt, um auf den Bucket zuzugreifen und Objekte abzurufen.

  1. Melden Sie sich bei Google Cloud console als Projektbearbeiter an.

  2. Wählen Sie im Startseiten-Dashboard die Option IAM & Admin » Roles aus.

  3. Wählen Sie Create Role aus.

  4. Geben Sie unter Title einen Titel und optional unter Description eine Beschreibung für die benutzerdefinierte Rolle ein.

  5. Wählen Sie Add Permissions aus.

  6. Wählen Sie unter Filter die Option Service und dann storage aus.

  7. Filtern Sie die Liste der Berechtigungen, und fügen Sie Folgendes aus der Liste hinzu:

    • storage.buckets.get

    • storage.objects.create

    • storage.objects.delete

    • storage.objects.get

    • storage.objects.list

  8. Wählen Sie Add aus.

  9. Wählen Sie Create aus.

Kundenspezifische Rolle zum GCS-Dienstkonto zuweisen

  1. Melden Sie sich bei Google Cloud console als Projektbearbeiter an.

  2. Wählen Sie im Startseiten-Dashboard die Option Cloud Storage » Buckets aus.

  3. Filtern Sie die Liste der Buckets, und wählen Sie den Bucket aus, den Sie beim Erstellen eines externen Volumes angegeben haben.

  4. Wählen Sie Permissions » View by principals und dann Grant access aus.

  5. Fügen Sie unter Add principals den Namen des Dienstkontos aus der Ausgabe in Schritt 2: GCS-Dienstkonto für Ihr Snowflake-Konto abrufen ein.

  6. Wählen Sie unter Assign roles die benutzerdefinierte IAM-Rolle aus, die Sie zuvor erstellt haben, und wählen Sie dann Save aus.

GCS-Dienstkonto Berechtigungen für die Schlüssel des Google Cloud Key Management Service zuweisen

Bemerkung

Dieser Schritt ist nur erforderlich, wenn Ihr GCS-Bucket mit einem in Google Cloud Key Management Service (Cloud KMS) gespeicherten Schlüssel verschlüsselt ist.

  1. Melden Sie sich bei Google Cloud console als Projektbearbeiter an.

  2. Wählen Sie auf dem Home-Dashboard Security » Key Management aus.

  3. Wählen Sie den Schlüsselring aus, der Ihrem GCS-Bucket zugewiesen ist.

  4. Wählen Sie in der rechten oberen Ecke die Option SHOW INFO PANEL aus. Der Informationsbereich für den Schlüsselring wird angezeigt.

  5. Suchen Sie über das Feld Add members in der DESCRIBE EXTERNAL VOLUME-Ausgabe von Schritt 2: GCS-Dienstkonto für Ihr Snowflake-Konto abrufen nach dem Namen des Dienstkontos:

  6. Wählen Sie in der Dropdown-Liste Select a role die Rolle Cloud KMS CryptoKey Encrypter/Decrypter aus.

  7. Wählen Sie Add aus. Der Name des Dienstkontos wird der Dropdown-Liste Cloud KMS CryptoKey Encrypter/Decrypter im Informationsbereich hinzugefügt.

Schritt 4: Überprüfen Sie den Speicherzugriff

Um zu überprüfen, ob Snowflake sich erfolgreich bei Ihrem Speicheranbieter authentifizieren kann, rufen Sie die Funktion SYSTEM$VERIFY_EXTERNAL_VOLUME auf.

SELECT SYSTEM$VERIFY_EXTERNAL_VOLUME('my_external_volume');
Copy

Bemerkung

Wenn Sie den folgenden Fehler erhalten, muss Ihr Kontoadministrator AWS STS in der Snowflake-Bereitstellungsregion aktivieren. Eine Anleitung dazu finden Sie unter Verwalten von AWS STS in einer AWS-Region in der AWS-Dokumentation.

Error assuming AWS_ROLE:
STS is not activated in this region for account:<external volume id>. Your account administrator can activate STS in this region using the IAM Console.

Ein externes Volume in Snowsight konfigurieren

Schritt 1: GCS-Dienstkonto für Ihr Snowflake-Konto abrufen

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie links unten Ihren Namen » Switch role und dann ACCOUNTADMIN oder eine Rolle mit der Berechtigung CREATEEXTERNAL VOLUME aus.

    Weitere Informationen dazu finden Sie unter Ihre Primärrolle wechseln.

  3. Wählen Sie im Navigationsmenü die Option Catalog » External data aus.

  4. Wählen Sie die Registerkarte External volumes aus.

  5. Wählen Sie + Create aus.

  6. Wählen Sie Google Cloud Storage und dann Next aus.

  7. Kopieren Sie auf der Seite Grant storage access den Wert des GCS service account in einen Texteditor.

    Snowflake stellt genau ein GCS-Dienstkonto für Ihr gesamtes Snowflake-Konto bereit. Alle externen GCS-Volumes verwenden dieses Dienstkonto.

Schritt 2: Dienstkontoberechtigungen für den Zugriff auf Bucket-Objekte gewähren

In diesem Schritt konfigurieren Sie IAM-Zugriffsberechtigungen für Snowflake in Ihrer Google Cloud console.

Kundenspezifische IAM-Rolle erstellen

Erstellen Sie eine kundenspezifische Rolle, die über die erforderlichen Berechtigungen verfügt, um auf den Bucket zuzugreifen und Objekte abzurufen.

  1. Melden Sie sich bei Google Cloud console als Projektbearbeiter an.

  2. Wählen Sie im Startseiten-Dashboard die Option IAM & Admin » Roles aus.

  3. Wählen Sie Create Role aus.

  4. Geben Sie unter Title einen Titel und optional unter Description eine Beschreibung für die benutzerdefinierte Rolle ein.

  5. Wählen Sie Add Permissions aus.

  6. Wählen Sie unter Filter die Option Service und dann storage aus.

  7. Filtern Sie die Liste der Berechtigungen, und fügen Sie Folgendes aus der Liste hinzu:

    • storage.buckets.get

    • storage.objects.create

    • storage.objects.delete

    • storage.objects.get

    • storage.objects.list

  8. Wählen Sie Add aus.

  9. Wählen Sie Create aus.

Kundenspezifische Rolle zum GCS-Dienstkonto zuweisen

  1. Melden Sie sich bei Google Cloud console als Projektbearbeiter an.

  2. Wählen Sie im Startseiten-Dashboard die Option Cloud Storage » Buckets aus.

  3. Filtern Sie die Liste der Buckets, und wählen Sie den Bucket aus, den Sie beim Erstellen eines externen Volumes angegeben haben.

  4. Wählen Sie Permissions » View by principals und dann Grant access aus.

  5. Fügen Sie unter Add principals den Namen des Dienstkontos aus der Ausgabe in Schritt 1: GCS-Dienstkonto für Ihr Snowflake-Konto abrufen ein.

  6. Wählen Sie unter Assign roles die benutzerdefinierte IAM-Rolle aus, die Sie zuvor erstellt haben, und wählen Sie dann Save aus.

Schritt 3: Externes Volume erstellen

Führen Sie die folgenden Schritte aus, um ein externes Volume in Snowflake mithilfe von Snowsight zu erstellen:

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie links unten Ihren Namen » Switch role und dann ACCOUNTADMIN oder eine Rolle mit der Berechtigung CREATEEXTERNAL VOLUME aus.

    Eine Anweisung dazu finden Sie unter Ihre Primärrolle wechseln.

  3. Wählen Sie im Navigationsmenü die Option Catalog » External data aus.

  4. Wählen Sie die Registerkarte External volumes aus.

  5. Wählen Sie + Create aus.

  6. Wählen Sie Google Cloud Storage und dann Next aus.

  7. Wählen Sie Next aus.

    Bemerkung

    Sie haben den Speicherzugriff bereits zuvor gewährt, als Sie das GCS-Dienstkonto für Ihr Snowflake-Konto abgerufen und dem GCS-Dienstkonto die kundenspezifische Rolle zugewiesen haben.

  8. Füllen Sie zum Konfigurieren des externen Volumes auf der Seite Configure external volume die folgenden Felder aus:

    Feld

    Beschreibung

    External volume name

    Geben Sie einen Namen für Ihr externes Volume ein.

    Storage base URL

    Gibt die Basis-URL für Ihren Cloudspeicherort an.

    Encryption (optional)

    Gibt den verwendeten Verschlüsselungstyp an. Mögliche Werte sind:

    Access scope

    Gibt an, ob Schreiboperationen für das externe Volume erlaubt sind; muss bei den folgenden Tabellen auf Allow writes gesetzt werden:

    • Iceberg-Tabellen, die Snowflake als Katalog verwenden.

    • Iceberg-Tabellen, die einen externen Katalog verwenden und beschreibbar sind. Extern verwaltete Iceberg-Tabellen sind beschreibbar, wenn Sie über eine mit dem Katalog verknüpfte Datenbank auf sie zugreifen, bei der derALLOWED_WRITE_OPERATIONS-Parameter auf TRUE eingestellt ist.

    Bei Iceberg-Tabellen, die aus Delta-Tabellendateien erstellt wurden, wird Snowflake durch Festlegen dieses Parameters auf Allow writes ermöglicht, Iceberg-Metadaten in Ihren externen Speicher zu schreiben. Weitere Informationen dazu finden Sie unter Delta-basierte Tabellen.

    Der Wert dieses Felds muss auch mit den Berechtigungen übereinstimmen, die Sie für das Cloudspeicherkonto für jeden angegebenen Speicherort festgelegt haben.

    Bemerkung

    Wenn Sie planen, das externe Volume zum Lesen von extern verwalteten Iceberg-Tabellen zu verwenden, können Sie dieses Feld auf „Aus“ setzen. Snowflake schreibt keine Daten oder Iceberg-Metadatendateien in Ihren Cloudspeicher, wenn Sie Tabellen in einem externen Iceberg-Katalog lesen.

    Scope

    Wählen Sie aus, wo dieses externe Volume zum Standardspeicherort für zukünftige Iceberg-Tabellen werden soll. Mögliche Werte sind:

    • Do not set a default: Legen Sie das externe Volume nirgendwo als Standard fest.

    • Account: Legen Sie das externe Volume als Standard für Iceberg-Tabellen fest, die unter dem gesamten Konto erstellt werden.

    • Specific database: Legen Sie das externe Volume als Standard für Iceberg-Tabellen fest, die unter der von Ihnen angegebenen Datenbank erstellt werden. Um diese Datenbank anzugeben, verwenden Sie das Dropdown-Menü Database, das angezeigt wird, wenn Sie Specific database auswählen.

    • Specific schema: Legen Sie das externe Volume als Standard für Iceberg-Tabellen fest, die unter dem von Ihnen angegebenen Schema erstellt werden. Um dieses Schema anzugeben, verwenden Sie das Dropdown-Menü Database, das angezeigt wird, um zuerst die übergeordnete Datenbank des Schemas und dann das Schema auszuwählen.

    Comment (optional)

    Gibt einen Kommentar für das externe Volume an.

    Connectivity

    Gibt an, ob Sie ausgehende private Konnektivität verwenden möchten, um Ihre Sicherheit zu verbessern. Weitere Informationen zur Verwendung dieses Parameters finden Sie unter Private Konnektivität zu externen Volumes für Google Cloud. Mögliche Werte sind:

    • Public (default): Verwenden des öffentlichen Internets

    • Private (Private Service Connect): Verwenden ausgehender privater Konnektivität

  9. Wählen Sie Next aus.

    Auf der Seite Verify connection & create volume verifiziert Snowflake Ihre Verbindung zu Google Cloud Storage und zeigt dann die Meldung „Successfully connected“ an.

    Bemerkung

    Wenn Snowflake Ihre Verbindung nicht verifizieren kann, überprüfen Sie Ihre Berechtigung oder die Konfiguration des externen Volumes, und wählen Sie dann Verify again aus.

  10. Wählen Sie Create aus.

Nächste Schritte

Nachdem Sie ein externes Volume konfiguriert haben, können Sie eine Iceberg-Tabelle erstellen.