Beispiele für die Verwendung von Amazon S3 Select für Objekte - Amazon Simple Storage Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Beispiele für die Verwendung von Amazon S3 Select für Objekte

Sie können S3 Select mit der Amazon S3-Konsole, REST-API und den AWS-SDKs verwenden, um Inhalte aus Objekten auszuwählen.

Weitere Hinweise zu unterstützten SQL-Funktionen für S3 Select finden Sie unter SQL-Funktionen.

Inhalte aus einem Objekt in der Amazon S3-Konsole auswählen
  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie im linken Navigationsbereich die Option Buckets aus.

  3. Wählen Sie den Bucket aus, der das Objekt enthält, aus dem Sie Inhalte auswählen möchten, und wählen Sie dann den Namen des Objekts aus.

  4. Wählen Sie Objektaktionen und anschließend Abfragen mit S3 Select aus.

  5. Konfigurieren Sie die Eingabeeinstellungen basierend auf dem Format Ihrer Eingabedaten.

  6. Konfigurieren Sie die Ausgabeeinstellungen basierend auf dem Format der Ausgabe, die Sie empfangen möchten.

  7. Um Datensätze aus dem ausgewählten Objekt zu extrahieren, geben Sie unter SQL-Abfrage die SQL-Befehle SELECT ein. Weitere Informationen zum Schreiben von SQL-Befehlen finden Sie unter SQL-Referenz für Amazon S3 Select.

  8. Nachdem Sie SQL-Abfragen eingegeben haben, wählen Sie SQL-Abfrage ausführen aus. Anschließend können Sie unter Abfrageergebnisse die Ergebnisse Ihrer SQL-Abfragen sehen.

Mit den AWS-SDKs können Sie Inhalte von Objekten auswählen. Falls in Ihrer Anwendung jedoch erforderlich, können Sie REST-Anforderungen auch direkt senden. Weitere Informationen über das Anforderungs- und Antwort-Format finden sie unter SelectObjectContent.

Sie können Amazon S3 Select nutzen, um Inhalte eines Objekts unter Verwendung der selectObjectContent-Methode auszuwählen. Wenn diese Methode erfolgreich ist, gibt sie die Ergebnisse des SQL-Ausdrucks zurück.

Java

Der folgende Java-Code gibt den Wert der ersten Spalte für jeden Datensatz zurück, der in einem Objekt gespeichert ist, das im CSV-Format gespeicherte Daten enthält. Im Beispiel müssen auch Progress- und Stats-Meldungen zurückgegeben werden. Sie müssen einen gültigen Bucket-Namen sowie ein Objekt angeben, das Daten im CSV-Format enthält.

Anweisungen zum Erstellen und Testen eines funktionierenden Beispiels finden Sie unter Testen der Java-Codebeispiele für Amazon S3.

package com.amazonaws; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.CSVInput; import com.amazonaws.services.s3.model.CSVOutput; import com.amazonaws.services.s3.model.CompressionType; import com.amazonaws.services.s3.model.ExpressionType; import com.amazonaws.services.s3.model.InputSerialization; import com.amazonaws.services.s3.model.OutputSerialization; import com.amazonaws.services.s3.model.SelectObjectContentEvent; import com.amazonaws.services.s3.model.SelectObjectContentEventVisitor; import com.amazonaws.services.s3.model.SelectObjectContentRequest; import com.amazonaws.services.s3.model.SelectObjectContentResult; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.concurrent.atomic.AtomicBoolean; import static com.amazonaws.util.IOUtils.copy; /** * This example shows how to query data from S3Select and consume the response in the form of an * InputStream of records and write it to a file. */ public class RecordInputStreamExample { private static final String BUCKET_NAME = "${my-s3-bucket}"; private static final String CSV_OBJECT_KEY = "${my-csv-object-key}"; private static final String S3_SELECT_RESULTS_PATH = "${my-s3-select-results-path}"; private static final String QUERY = "select s._1 from S3Object s"; public static void main(String[] args) throws Exception { final AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient(); SelectObjectContentRequest request = generateBaseCSVRequest(BUCKET_NAME, CSV_OBJECT_KEY, QUERY); final AtomicBoolean isResultComplete = new AtomicBoolean(false); try (OutputStream fileOutputStream = new FileOutputStream(new File (S3_SELECT_RESULTS_PATH)); SelectObjectContentResult result = s3Client.selectObjectContent(request)) { InputStream resultInputStream = result.getPayload().getRecordsInputStream( new SelectObjectContentEventVisitor() { @Override public void visit(SelectObjectContentEvent.StatsEvent event) { System.out.println( "Received Stats, Bytes Scanned: " + event.getDetails().getBytesScanned() + " Bytes Processed: " + event.getDetails().getBytesProcessed()); } /* * An End Event informs that the request has finished successfully. */ @Override public void visit(SelectObjectContentEvent.EndEvent event) { isResultComplete.set(true); System.out.println("Received End Event. Result is complete."); } } ); copy(resultInputStream, fileOutputStream); } /* * The End Event indicates all matching records have been transmitted. * If the End Event is not received, the results may be incomplete. */ if (!isResultComplete.get()) { throw new Exception("S3 Select request was incomplete as End Event was not received."); } } private static SelectObjectContentRequest generateBaseCSVRequest(String bucket, String key, String query) { SelectObjectContentRequest request = new SelectObjectContentRequest(); request.setBucketName(bucket); request.setKey(key); request.setExpression(query); request.setExpressionType(ExpressionType.SQL); InputSerialization inputSerialization = new InputSerialization(); inputSerialization.setCsv(new CSVInput()); inputSerialization.setCompressionType(CompressionType.NONE); request.setInputSerialization(inputSerialization); OutputSerialization outputSerialization = new OutputSerialization(); outputSerialization.setCsv(new CSVOutput()); request.setOutputSerialization(outputSerialization); return request; } }
JavaScript

Ein JavaScript-Beispiel, das AWS SDK for JavaScript mit dem S3 SelectObjectContent API-Vorgang zur Auswahl von Datensätzen aus in Amazon S3 gespeicherten JSON- und CSV-Dateien nutzt, finden Sie im Blogbeitrag Introducing support for Amazon S3 Select in the AWS SDK for JavaScript (Einführung von Support für Amazon S3 Select in…).

Python

Ein Python-Beispiel für die Verwendung von SQL-Abfragen zum Durchsuchen von Daten, die in Amazon S3 als CSV-Datei (Comma-Separated Value) mit S3 Select geladen wurden, finden Sie im Blogbeitrag Querying data without servers or databases using Amazon S3 Select (Daten ohne Server oder Datenbanken mit Amazon S3 Select abfragen).