Verwenden von Amazon S3-kompatiblem Speicher

Unter diesem Thema finden Sie die erforderlichen Informationen für den Zugriff von Snowflake aus auf Amazon S3-kompatiblen Speicher.

Eine Speicheranwendung oder ein Speichergerät ist Amazon S3-kompatibel, wenn es eine Anwendungsprogrammierschnittstelle (API) bietet, die mit dem Industriestandard Amazon Simple Storage Service (S3) REST API konform ist. Die Amazon S3 REST API ermöglicht CRUD-Operationen und administrative Aktionen für Speicher-Buckets und Speicherobjekte.

Mit Snowflake können Sie einen externen Stagingbereich verwenden, um eine Verbindung zu einer wachsenden Anzahl von S3-kompatiblen Speicherlösungen herzustellen, einschließlich lokalem Speicher und Geräten, die außerhalb der Public Cloud existieren. Der externe Stagingbereich speichert einen S3-kompatiblen API-Endpunkt, Bucketname und Bucketpfad sowie Anmeldeinformationen. Erteilen Sie Rollen Berechtigungen für diesen Stagingbereich, damit die Benutzer Daten von den Speicherorten laden und Daten in diese entladen können.

Sie können die Snowflake-Unterstützung für Amazon S3-kompatiblen Speicher nutzen, um folgende Aufgaben auszuführen:

Unterstützung von Cloudplattformen

Dieses Feature ist für Snowflake-Konten verfügbar, die auf einer der folgenden unterstützten Cloudplattformen gehostet werden:

  • Amazon Web Services

  • Google Cloud

  • Microsoft Azure

Anforderungen an S3-kompatiblen Speicher

Ein S3-kompatibler API-Endpunkt für Snowflake muss die folgenden Anforderungen erfüllen:

  • Hohe Konformität mit der S3-API und Fähigkeit zur Verarbeitung unserer öffentlichen Testsuite (in GitHub). Wenn sich der Endpunkt nicht wie S3 verhält, kann er nicht mit Snowflake verwendet werden.

  • Wird von Ihrem Speicheranbieter als auf Snowflake-S3-Kompatibilität getesteter und konformer Dienst unterstützt. Eine Liste von Anbietern, die zumindest einige ihrer Produkte getestet und als kompatibel mit Snowflake befunden haben, finden Sie unter Anbieterunterstützung für S3-kompatiblen Speicher.

  • Ermöglicht Zugriff über die öffentliche Cloud, in der Ihr Snowflake-Konto gehostet wird.

  • Hochverfügbar und leistungsfähig für Analysezwecke.

  • Konfiguriert zur Verwendung von Anforderungen wie im Stil eines virtuellen Hosts. Weitere Informationen dazu finden Sie in der Amazon S3-Dokumentation unter Virtuelles Hosting von Buckets.

  • Zur Verwendung von HTTPS-Kommunikation mit gültigem TLS-Zertifikat konfiguriert.

  • Zur Verwendung direkter Anmeldeinformationen konfiguriert.

  • Enthält keine Portnummer. Beispielsweise wird der Endpunkt „mystorage.com:3000“ nicht unterstützt.

Wichtig

Amazon S3-kompatible Endpunkte sind nicht automatisch für alle Konten aktiviert. Wenden Sie sich an Ihre Snowflake-Kundenbetreuer oder an den Snowflake-Support, um dieses Feature anzufordern. Überprüfen Sie erst die Endpunkte mit unserer öffentlichen Testsuite (in GitHub), bevor Sie die Anfrage senden.

Fügen Sie Ihrem Anfrage die folgenden Informationen bei:

  • Name des Snowflake-Kontos und der Cloudregion Ihrer Bereitstellung

  • Die Endpunkt-URL (d. h. „mein-s3-endpunkt.firma.de“).

  • Der Software- oder Hardwareanbieter, der den Endpunkt bereitstellt.

Erstellen eines externen Stagingbereichs für S3-kompatiblen Speicher

Um einen externen Stagingbereich für S3-kompatiblen Speicher zu erstellen, erstellen Sie mit dem Befehl CREATE STAGE einen benannten externen Stagingbereich. Ein benanntes Stagingbereichsobjekt kann neben anderen SQL-Aktionen zum Auflisten von Dateien, zum Laden von Daten und zum Entladen von Dateien verwendet werden.

Fügen Sie optional eine Verzeichnistabelle für den externen Stagingbereich hinzu. Sie können eine Verzeichnistabelle abfragen, um Datei-URLs abzurufen und so auf Dateien im referenzierten Speicher sowie auf andere Metadaten zuzugreifen.

Bemerkung

Wenn Sie eine Verzeichnistabelle hinzufügen, müssen Sie den Parameter AUTO_REFRESH auf FALSE setzen. Die Metadaten von S3-kompatiblen externen Stagingbereichen können nicht automatisch aktualisiert werden.

Im folgenden Beispiel wird ein externer Stagingbereich mit dem Namen my_s3_compat_stage erstellt, der auf den Bucket und den Pfad namens my_bucket/files/ am Endpunkt mystorage.com verweist: Die in diesem Beispiel verwendeten Werte AWS_KEY_ID und AWS_SECRET_KEY dienen nur zur Veranschaulichung.

CREATE STAGE my_s3compat_stage
  URL = 's3compat://my_bucket/files/'
  ENDPOINT = 'mystorage.com'
  CREDENTIALS = (AWS_KEY_ID = '1a2b3c...' AWS_SECRET_KEY = '4x5y6z...')
Copy

Laden und Entladen von Daten

Sie können Daten über einen externen Stagingbereich laden und entladen, der für S3-kompatiblen Speicher konfiguriert ist. Die folgenden Features funktionieren mit S3-kompatiblem Speicher:

Erweitern von Data Lakes mit externen Tabellen

Sie können externe Tabellen mit S3-kompatiblem Speicher verwenden, um Daten abzufragen, ohne sie vorher in Snowflake laden zu müssen. In diesem Abschnitt erfahren Sie kurz, wie Sie eine externe Tabelle erstellen und abfragen, die auf einen Speicherort in einem externen Stagingbereich verweist, der für S3-kompatiblen Speicher konfiguriert ist.

Beginnen Sie, indem Sie mit CREATE EXTERNAL TABLE eine externe Tabelle erstellen, die auf einen S3-kompatiblen externen Stagingbereich verweist.

Bemerkung

Die Metadaten dieser externen Tabellen können nicht automatisch aktualisiert werden. Die Parametereinstellung AUTO_REFRESH = TRUE wird nicht unterstützt. Sie müssen die Metadaten manuell aktualisieren, indem Sie den Befehl ALTER EXTERNAL TABLE … REFRESH ausführen, um alle hinzugefügten oder entfernten Dateien zu registrieren.

Im folgenden Beispiel wird eine externe Tabelle namens et erstellt, die auf den Unterpfad path1 in einem Stagingbereich namens my_s3compat_stage verweist. Die Dateien im Unterpfad path1 liegen im Apache Parquet-Format vor.

CREATE EXTERNAL TABLE et
 LOCATION=@my_s3compat_stage/path1/
 AUTO_REFRESH = FALSE
 REFRESH_ON_CREATE = TRUE
 FILE_FORMAT = (TYPE = PARQUET);
Copy

Nachdem Sie eine externe Tabelle für S3-kompatible Speicherung erstellt haben, können Sie diese abfragen. Fragen Sie beispielsweise die Spalte value in der zuvor erstellten externen Tabelle ab:

SELECT value FROM et;
Copy

Die Abfrageleistung variiert je nach Netzwerk- und Anwendungs- bzw. Geräteleistung. Wenn die Verarbeitungsleistung entscheidend ist, empfehlen wir das Erstellen einer materialisierten Ansicht auf der externen Tabelle.

Anbieterunterstützung für S3-kompatiblen Speicher

Sie können Geräte oder Anwendungen, die eine S3-kompatible API haben, mit Snowflake verwenden. Ihr Anbieter von Speicherdienstleistungen ist jedoch für die Sicherstellung der Konformität verantwortlich.

Die folgenden Anbieter haben Snowflake mitgeteilt, dass sie zumindest einige ihrer Produkte getestet haben und dass diese mit Snowflake funktionieren:

  • Backblaze

  • Cloudflare

  • Cloudian

  • Cohesity

  • Dell

  • Hitachi Content Platform

  • IDrive e2

  • MinIO

  • NetApp (StorageGRID)

  • Nutanix

  • PureStorage

  • Scality

  • Wasabi

Diese Liste dient lediglich als Orientierung. Snowflake testet keine externen Produkte, um die Kompatibilität zu überprüfen, und kann keine Probleme in Produkten von Drittanbietern beheben. Wenn Sie Fragen dazu haben, ob oder wie Ihre Hardware oder Software mit einer S3-API mit Snowflake funktioniert, empfehlen wir Ihnen, sich direkt an den Hersteller zu wenden.

Testen Ihrer S3-kompatiblen API

Wenn Sie ein Hardware- oder Softwareentwickler sind, der eine S3-kompatible API erstellt hat, können Sie unsere öffentliche Testsuite (in GitHub) verwenden, um zu testen, ob Ihre S3-API mit Snowflake funktioniert. Die Testsuite sucht nach offensichtlichen Abweichungen zwischen Ihrer Implementierung und dem, was Snowflake von S3 erwartet. Allerdings kann es Fälle geben, in denen die Tests keine Inkompatibilität feststellen.

Wenn Sie als Kunde Ihre eigenen Geräte testen möchten, empfehlen wir Ihnen, sich an Ihren Anbieter zu wenden, um diese Tests auszuführen. Sie können diese öffentlichen Tests jedoch auch auf Ihren Geräten ausführen, um die Kompatibilität zu beurteilen.