Exemples d'utilisation d'Amazon S3 Select sur des objets - 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 des objets

Vous pouvez utiliser S3 Select avec la console Amazon S3, l'API REST et les kits SDK AWS pour sélectionner du contenu à partir d'objets.

Pour plus d'informations sur les fonctions SQL prises en charge pour S3 Select, consultez Fonctions SQL.

Pour sélectionner du contenu à partir d'un objet dans la console Amazon S3
  1. Connectez-vous à la AWS Management Console et ouvrez la console Amazon S3 à 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 Requête SQL, saisissez les commandes SELECT et SQL. Pour plus d'informations sur la procédure d'écriture de commandes SQL, consultez Référence SQL pour Amazon S3 Select.

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

Vous pouvez utiliser les kits SDK AWS pour sélectionner le contenu d'objets. Toutefois, si l'application l'exige, vous pouvez envoyer directement des demandes REST. Pour plus d'informations sur le format de demande et de réponse, consultez SelectObjectContent.

Vous pouvez utiliser Amazon S3 Select pour sélectionner le contenu d'un objet à l'aide de la méthode selectObjectContent. Si cette méthode aboutit, elle renvoie les résultats de l'expression SQL.

Java

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

Pour obtenir les instructions sur la création et le test d'un exemple pratique, consultez Test des exemples de code Java 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

Pour un exemple JavaScript qui utilise AWS SDK for JavaScript avec l'opération d'API SelectObjectContent S3 pour sélectionner des enregistrements à partir de fichiers JSON et CSV stockés dans Amazon S3, consultez le billet de blog Présentation de la prise en charge pour Amazon S3 Select dans AWS SDK for JavaScript.

Python

Pour un exemple Python sur l'utilisation de requêtes SQL pour effectuer des recherches dans des données chargées sur Amazon S3 en tant que fichier CSV (valeur séparée par des virgules) à l'aide de S3 Select, consultez le billet de blog Interrogation de données sans serveur ou base de données à l'aide d'Amazon S3 Select.