Abfragen von Daten vor Ort mit Amazon S3 Select - Amazon Simple Storage Service

Abfragen von Daten vor Ort mit Amazon S3 Select

Wichtig

Amazon S3 Select ist für Neukunden nicht mehr verfügbar. Bestandskunden von Amazon S3 Select können das Feature weiterhin wie gewohnt nutzen. Weitere Informationen

Mit Amazon S3 Select können Sie mit SQL (Structured Query Language)-Anweisungen die Inhalte von Amazon S3-Objekten filtern, sodass nur die tatsächlich von Ihnen benötigte Teilmenge an Daten abgerufen wird. Wenn Sie die Daten mit Amazon S3 Select filtern, wird die von Amazon S3 übertragene Datenmenge reduziert, wodurch sich die Kosten und Latenzzeiten für diesen Datenabruf verringern.

Mit Amazon S3 Select können Sie jeweils nur ein Objekt abfragen. Es funktioniert für ein Objekt, das im CSV-, JSON- oder Apache Parquet-Format gespeichert ist. Es funktioniert auch mit einem Objekt, das mit GZIP oder BZIP2 (nur für CSV- und JSON-Objekte) komprimiert wurde, sowie für ein serverseitig verschlüsseltes Objekt. Als Format für die Ergebnisse geben Sie entweder CSV oder JSON an. Sie können ebenfalls festlegen, wie die Datensätze im Ergebnis getrennt werden.

In der Anforderung werden SQL-Ausdrücke an Amazon S3 übergeben. Amazon S3 Select unterstützt eine Teilmenge von SQL. Weitere Informationen zu den von Amazon S3 Select unterstützten SQL-Elementen finden Sie unter SQL-Referenz für Amazon S3 Select.

Sie können SQL-Abfragen über die Amazon-S3-Konsole, AWS Command Line Interface (AWS CLI), SelectObjectContent-REST-API-Operation oder AWS-SDKs durchführen.

Anmerkung

Bei der Amazon S3-Konsole ist die zurückgegebene Datenmenge auf 40 MB begrenzt. Sollen mehr Daten abgerufen werden, verwenden Sie die AWS CLI oder die API.

Voraussetzungen und Einschränkungen

Für die Verwendung von Amazon S3 Select müssen folgende Voraussetzungen erfüllt sein:

  • Sie haben die Berechtigung s3:GetObject für das abzufragende Objekt.

  • Falls das abzufragende Objekt serverseitig mit vom Kunden bereitgestellten Verschlüsselungsschlüsseln (SSE-C) verschlüsselt ist, müssen Sie https verwenden und den Verschlüsselungsschlüssel in der Anforderung angeben.

Für die Verwendung von Amazon S3 Select gelten die folgenden Einschränkungen:

  • S3 Select kann nur ein Objekt pro Anforderung abfragen.

  • Die maximale Länge des SQL-Ausdrucks ist 256 KB.

  • Die Maximallänge eines Datensatzes in der Eingabe oder im Ergebnis liegt bei 1 MB.

  • Amazon S3 Select kann nur mithilfe des JSON-Ausgabeformats verschachtelte Daten übermitteln.

  • Sie können in den Speicherklassen S3 Glacier Flexible Retrieval, S3 Glacier Deep Archive oder Reduced Redundancy Storage (RRS) gespeicherte Objekte nicht abfragen. Sie können auch die Objekte, die auf der Ebene S3 Intelligent-Tiering Archive Access oder S3 Intelligent-Tiering Deep Archive Access gespeichert sind, nicht abfragen. Weitere Informationen über Speicherklassen finden Sie unter Verstehen und Verwalten von Amazon-S3-Speicherklassen.

Bei Verwendung von Amazon S3 Select mit einem Parquet-Objekt gelten zusätzliche Einschränkungen.

  • Amazon S3 Select unterstützt ausschließlich die Spaltenkompression mittels GZIP oder Snappy. Amazon S3 Select unterstützt keine Kompression ganzer Objekte für ein Parquet-Objekt.

  • Amazon S3 Select unterstützt keine Parquet-Ausgabe. Sie müssen das Ausgabeformat als CSV oder JSON angeben.

  • Die Maximalgröße für unkomprimierte Zeilengruppen beträgt 512 MB.

  • Sie müssen die im Schema des Objekts angegebenen Datentypen verwenden.

  • Select-Anfragen für ein wiederholtes Feld geben ausschließlich den letzten Wert zurück.

Erstellen einer Anforderung

Beim Erstellen einer Anforderung geben Sie die Details des abzufragenden Objekts mithilfe eines InputSerialization-Objekts an. Die Details zur Rückgabe der Ergebnisse geben Sie mit einem OutputSerialization-Objekt an. Außerdem binden Sie den SQL-Ausdruck ein, der von Amazon S3 zum Filtern der Anforderung verwendet wird.

Weitere Informationen zum Erstellen einer Amazon S3 Select-Anforderung finden Sie unter SelectObjectContent in der Referenz zu Amazon Simple Storage Service API. In den folgenden Abschnitten finden Sie eines der SDK-Codebeispiele.

Anforderungen mittels Scanbereichen

Mit Amazon S3 Select können Sie eine Teilmenge eines Objekts scannen, indem Sie einen abzufragenden Byte-Bereich angeben. Mit dieser Fähigkeit können Sie das gesamte Objekt parallel scannen, indem Sie die Arbeit in separate Amazon S3 Select-Anforderungen für eine Reihe von sich nicht überlappenden Scanbereichen aufteilen.

Scanbereiche müssen nicht an Datensatzgrenzen ausgerichtet werden. Eine Scanbereichsanforderung von Amazon S3 Select wird über den angegebenen Byte-Bereich ausgeführt. Ein Datensatz, der im angegebenen Scanbereich beginnt, aber darüber hinaus reicht, wird von der Abfrage bearbeitet. Beispiel: Im Folgenden wird ein Amazon S3-Objekt gezeigt, das eine Reihe von Datensätzen in einem zeilengetrennten CSV-Format enthält:

A,B C,D D,E E,F G,H I,J

Gehen wir einmal davon aus, dass Sie den Amazon-S3-Select-Parameter ScanRange verwenden, bei (Byte) 1 beginnen und bei (Byte) 4 enden. Der Scanbereich würde also bei „,“ beginnen und der Scan würde bis zum Ende des Datensatzes fortgesetzt, der bei „C“ beginnt. Ihre Scanbereichsanfrage gibt das Ergebnis „C, D“ zurück, da dies das Ende des Datensatzes ist.

Scanbereichsanfragen von Amazon S3 Select unterstützen Parquet-, CSV- (ohne Trennung mit Anführungszeichen) und JSON-Objekte (nur im LINES-Modus). CSV- und JSON-Objekte dürfen nicht komprimiert sein. Wenn bei zeilenbasierten CSV- und JSON-Objekten ein Scanbereich als Teil der Amazon S3-Select-Anforderung angegeben wird, werden alle Datensätze, die innerhalb des Scanbereichs beginnen, verarbeitet. Bei Parquet-Objekten werden alle Zeilengruppen, die innerhalb des angeforderten Scanbereich beginnen, verarbeitet.

Scanbereichsanfragen von Amazon S3 Select stehen zur Nutzung mit der AWS CLI, der Amazon S3-API und AWS-SDKs zur Verfügung. Sie können den ScanRange-Parameter in der Amazon S3 Select-Anfrage als diese Funktion verwenden. Weitere Informationen finden Sie unter SelectObjectContent in der API-Referenz zu Amazon Simple Storage Service.

Fehler

Amazon S3 Select gibt einen Fehlercode und eine zugehörige Fehlermeldung zurück, wenn beim Versuch, eine Abfrage auszuführen, ein Problem auftritt. Eine Liste der Fehlercodes und Beschreibungen finden Sie im Abschnitt List of SELECT Object Content Error Codes auf der Seite Error Responses im Amazon-Simple-Storage-Service-API-Referenz.

Weitere Informationen zu Amazon S3 Select finden Sie in den folgenden Themen: