Esempi di utilizzo di Amazon S3 Select su un oggetto - Amazon Simple Storage Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esempi di utilizzo di Amazon S3 Select su un oggetto

Importante

Amazon S3 Select non è più disponibile per i nuovi clienti. I clienti esistenti di Amazon S3 Select possono continuare a utilizzare la funzionalità come di consueto. Ulteriori informazioni

Puoi usare S3 Select per selezionare il contenuto da un oggetto utilizzando la console Amazon S3, l'API REST e il. AWS SDKs

Per ulteriori informazioni sulle funzioni SQL supportate per S3 Select, consulta Funzioni SQL.

Per selezionare il contenuto da un oggetto nella console Amazon S3
  1. Accedi a AWS Management Console e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Nel pannello di navigazione a sinistra, scegli Buckets (Bucket).

  3. Scegli il bucket che contiene l'oggetto da cui desideri selezionare il contenuto, quindi scegli il nome dell'oggetto.

  4. Scegli Azioni oggetto e Interroga con S3 Select.

  5. Configura impostazioni di input, in base al formato dei dati di input.

  6. Configura impostazioni di output, in base al formato dell'output che desideri ricevere.

  7. Per estrarre i record dall'oggetto scelto, in query SQL, inserisci i comandi SELECT SQL. Per ulteriori informazioni su come scrivere comandi SQL, consulta Documentazione di riferimento su SQL per Amazon S3 Select.

  8. Dopo aver inserito le query SQL, scegli Esegui query SQL. Quindi, in Risultati della query, puoi visualizzare i risultati delle tue query SQL.

Puoi usare il AWS SDKs per selezionare il contenuto da un oggetto. Tuttavia, se l'applicazione lo richiede, è possibile inviare richieste REST direttamente. Per ulteriori informazioni sul formato della richiesta e della risposta, consulta SelectObjectContent.

È possibile utilizzare Amazon S3 Select per selezionare alcuni dei contenuti di un oggetto utilizzando il metodo selectObjectContent. Se questo metodo ha esito positivo, restituisce i risultati dell'espressione SQL.

Java

Il codice Java seguente restituisce il valore della prima colonna per ogni record archiviato in un oggetto contenente dati archiviati in formato CSV. Richiede anche che vengano restituiti messaggi Progress e Stats. Fornire un nome bucket e un oggetto validi contenenti dati in formato CSV.

Per istruzioni su come creare e testare un esempio funzionante, consulta la Guida introduttiva per gli AWS SDK per Java sviluppatori.

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

Per un JavaScript esempio che utilizza l'operazione AWS SDK per JavaScript con l'SelectObjectContentAPI S3 per selezionare i record dai file JSON e CSV archiviati in Amazon S3, consulta il post sul blog Introduzione al supporto per Amazon S3 Select nel. AWS SDK per JavaScript

Python

Per un esempio Python sull'utilizzo delle query SQL per cercare i dati caricati su Amazon S3 come file CSV (Comma-Separated Value) utilizzando S3 Select, vedere il post del blog Interrogazione di dati senza server o database tramite Amazon S3 Select.