Exemples d'utilisation d'Amazon S3 Select sur un objet - Amazon Simple Storage Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exemples d'utilisation d'Amazon S3 Select sur un objet

Important

Amazon S3 Select n'est plus disponible pour les nouveaux clients. Les clients existants d'Amazon S3 Select peuvent continuer à utiliser cette fonctionnalité comme d'habitude. En savoir plus

Vous pouvez utiliser S3 Select pour sélectionner le contenu d'un objet à l'aide de la console Amazon S3, du RESTAPI, et du AWS SDKs.

Pour plus d'informations sur les SQL fonctions prises en charge par S3 Select, consultezSQLfonctions.

Pour sélectionner du contenu à partir d'un objet dans la console Amazon S3
  1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans le panneau de navigation de gauche, choisissez Compartiments.

  3. Choisissez le compartiment qui contient l'objet dont vous souhaitez sélectionner le contenu, puis choisissez le nom de l'objet.

  4. Choisissez Actions d'objet, puis Requête avec S3 Select.

  5. Configurez Paramètres d'entrée en fonction du format de vos données d'entrée.

  6. Configurez Paramètres de sortie en fonction du format de sortie que vous souhaitez recevoir.

  7. Pour extraire des enregistrements de l'objet choisi, sous SQLRequête, entrez SELECT SQL commandes. Pour plus d'informations sur la façon d'écrire SQL des commandes, consultezSQLréférence pour Amazon S3 Select.

  8. Après avoir saisi SQL des requêtes, choisissez Exécuter SQL la requête. Ensuite, sous Résultats de la requête, vous pouvez voir les résultats de vos SQL requêtes.

Vous pouvez utiliser le AWS SDKs pour sélectionner le contenu d'un objet. Toutefois, si votre application l'exige, vous pouvez envoyer des REST demandes directement. Pour plus d'informations sur le format de demande et de réponse, voir SelectObjectContent.

Vous pouvez utiliser Amazon S3 Select pour sélectionner une partie du contenu d'un objet à l'aide de selectObjectContent cette méthode. Si cette méthode est efficace, elle renvoie les résultats de l'SQLexpression.

Java

Le code Java suivant renvoie la valeur de la première colonne pour chaque enregistrement stocké dans un objet contenant des données stockées au CSV format. Il demande également que les messages Progress et Stats soient retournés. Vous devez fournir un nom de compartiment valide et un objet contenant des données au CSV format.

Pour obtenir des instructions sur la création et le test d'un échantillon fonctionnel, voir Getting Started dans le guide du AWS SDK for Java développeur.

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

Pour un JavaScript exemple qui utilise l'SelectObjectContentAPIopération AWS SDK for JavaScript with the S3 pour sélectionner des enregistrements JSON et des CSV fichiers stockés dans Amazon S3, consultez le billet de blog Introducing support for Amazon S3 Select dans le AWS SDK for JavaScript.

Python

Pour un exemple Python d'utilisation de SQL requêtes pour rechercher des données chargées dans Amazon S3 sous forme de fichier de valeurs séparées par des virgules (CSV) à l'aide de S3 Select, consultez le billet de blog Querying data without servers or database using Amazon S3 Select.