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.
Um das externe Volume für extern verwaltete Iceberg-Tabellen zu verwenden, müssen sich alle Ihre Tabellendaten und Metadaten-Dateien in diesem Bucket befinden.
Um die Datenwiederherstellung zu unterstützen, aktivieren Sie die Versionierung für Ihren externen Cloudspeicherort.
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')
)
);
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;
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.
Melden Sie sich bei Google Cloud console als Projektbearbeiter an.
Wählen Sie im Startseiten-Dashboard die Option IAM & Admin » Roles aus.
Wählen Sie Create Role aus.
Geben Sie unter Title einen Titel und optional unter Description eine Beschreibung für die benutzerdefinierte Rolle ein.
Wählen Sie Add Permissions aus.
Wählen Sie unter Filter die Option Service und dann storage aus.
Filtern Sie die Liste der Berechtigungen, und fügen Sie Folgendes aus der Liste hinzu:
storage.buckets.getstorage.objects.createstorage.objects.deletestorage.objects.getstorage.objects.list
Wählen Sie Add aus.
Wählen Sie Create aus.
Kundenspezifische Rolle zum GCS-Dienstkonto zuweisen¶
Melden Sie sich bei Google Cloud console als Projektbearbeiter an.
Wählen Sie im Startseiten-Dashboard die Option Cloud Storage » Buckets aus.
Filtern Sie die Liste der Buckets, und wählen Sie den Bucket aus, den Sie beim Erstellen eines externen Volumes angegeben haben.
Wählen Sie Permissions » View by principals und dann Grant access aus.
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.
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.
Melden Sie sich bei Google Cloud console als Projektbearbeiter an.
Wählen Sie auf dem Home-Dashboard Security » Key Management aus.
Wählen Sie den Schlüsselring aus, der Ihrem GCS-Bucket zugewiesen ist.
Wählen Sie in der rechten oberen Ecke die Option SHOW INFO PANEL aus. Der Informationsbereich für den Schlüsselring wird angezeigt.
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:
Wählen Sie in der Dropdown-Liste Select a role die Rolle Cloud KMS CryptoKey Encrypter/Decrypter aus.
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');
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¶
Melden Sie sich bei Snowsight an.
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.
Wählen Sie im Navigationsmenü die Option Catalog » External data aus.
Wählen Sie die Registerkarte External volumes aus.
Wählen Sie + Create aus.
Wählen Sie Google Cloud Storage und dann Next aus.
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.
Melden Sie sich bei Google Cloud console als Projektbearbeiter an.
Wählen Sie im Startseiten-Dashboard die Option IAM & Admin » Roles aus.
Wählen Sie Create Role aus.
Geben Sie unter Title einen Titel und optional unter Description eine Beschreibung für die benutzerdefinierte Rolle ein.
Wählen Sie Add Permissions aus.
Wählen Sie unter Filter die Option Service und dann storage aus.
Filtern Sie die Liste der Berechtigungen, und fügen Sie Folgendes aus der Liste hinzu:
storage.buckets.getstorage.objects.createstorage.objects.deletestorage.objects.getstorage.objects.list
Wählen Sie Add aus.
Wählen Sie Create aus.
Kundenspezifische Rolle zum GCS-Dienstkonto zuweisen¶
Melden Sie sich bei Google Cloud console als Projektbearbeiter an.
Wählen Sie im Startseiten-Dashboard die Option Cloud Storage » Buckets aus.
Filtern Sie die Liste der Buckets, und wählen Sie den Bucket aus, den Sie beim Erstellen eines externen Volumes angegeben haben.
Wählen Sie Permissions » View by principals und dann Grant access aus.
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.
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:
Melden Sie sich bei Snowsight an.
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.
Wählen Sie im Navigationsmenü die Option Catalog » External data aus.
Wählen Sie die Registerkarte External volumes aus.
Wählen Sie + Create aus.
Wählen Sie Google Cloud Storage und dann Next aus.
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.
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:
None (default): Keine Verschlüsselung.
SSE-KMS (enter key): Serverseitige Verschlüsselung mit in KMS gespeicherten Schlüsseln. Weitere Informationen dazu finden Sie unter vom Kunden verwaltete Verschlüsselungsschlüssel.
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
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.
Wählen Sie Create aus.
Nächste Schritte¶
Nachdem Sie ein externes Volume konfiguriert haben, können Sie eine Iceberg-Tabelle erstellen.
Weitere Informationen zum Erstellen einer schreibgeschützten Iceberg-Tabelle, die einen externen Katalog verwendet, finden Sie unter Eine Katalogintegration konfigurieren.
Um eine Iceberg-Tabelle mit voller Unterstützung der Snowflake-Plattform zu erstellen, lesen Sie Eine Snowflake-verwaltete Tabelle erstellen.