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.
Voraussetzungen¶
Bevor Sie ein externes Volume konfigurieren, benötigen Sie Folgendes:
Ein Google Cloud Storage Bucket in derselben Region, in der sich Ihr Snowflake-Konto befindet.
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.
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 Platform 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 der Google Cloud Platform Console als Projekteditor 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.get
storage.objects.create
storage.objects.delete
storage.objects.get
storage.objects.list
Wählen Sie Add aus.
Wählen Sie Create aus.
Kundenspezifische Rolle zum GCS-Dienstkonto zuweisen¶
Melden Sie sich bei der Google Cloud Platform Console als Projekteditor 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 der Google Cloud Platform Console als Projekteditor 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_s3_external_volume');
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.