Esecuzione di operazioni sugli Amazon S3 oggetti - AWS SDK for Java 1. x

La AWS SDK for Java versione 1.x è entrata in modalità manutenzione il 31 luglio 2024 e sarà disponibile il 31 end-of-supportdicembre 2025. Ti consigliamo di eseguire la migrazione a per continuare AWS SDK for Java 2.xa ricevere nuove funzionalità, miglioramenti della disponibilità e aggiornamenti di sicurezza.

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à.

Esecuzione di operazioni sugli Amazon S3 oggetti

Un Amazon S3 oggetto rappresenta un file o una raccolta di dati. Ogni oggetto deve risiedere all'interno di un secchio.

Nota

Questi esempi di codice presuppongono che l'utente abbia compreso il materiale contenuto in Utilizzo delle credenziali predefinite AWS SDK for Java e abbia configurato AWS le credenziali predefinite utilizzando le informazioni contenute in Configurazione AWS delle credenziali e Regione per lo sviluppo.

Caricamento di un oggetto

Usa il putObject metodo del client AmazonS3, fornendo il nome del bucket, il nome della chiave e il file da caricare. Il bucket deve esistere; in caso contrario si verifica un errore.

Importazioni

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3;

Codice

System.out.format("Uploading %s to S3 bucket %s...\n", file_path, bucket_name); final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { s3.putObject(bucket_name, key_name, new File(file_path)); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

Guarda l'esempio completo suGitHub.

Elenco di oggetti

Per ottenere un elenco di oggetti all'interno di un bucket, utilizza il listObjects metodo del client AmazonS3, fornendo il nome di un bucket.

Il listObjects metodo restituisce un ObjectListingoggetto che fornisce informazioni sugli oggetti nel bucket. Per elencare i nomi degli oggetti (chiavi), usa il getObjectSummaries metodo per ottenere un elenco di ObjectSummary oggetti S3, ognuno dei quali rappresenta un singolo oggetto nel bucket. Quindi chiama il suo getKey metodo per recuperare il nome dell'oggetto.

Importazioni

import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.ListObjectsV2Result; import com.amazonaws.services.s3.model.S3ObjectSummary;

Codice

System.out.format("Objects in S3 bucket %s:\n", bucket_name); final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); ListObjectsV2Result result = s3.listObjectsV2(bucket_name); List<S3ObjectSummary> objects = result.getObjectSummaries(); for (S3ObjectSummary os : objects) { System.out.println("* " + os.getKey()); }

Guarda l'esempio completo suGitHub.

Donwload di un oggetto

Usa il getObject metodo del client AmazonS3, passandogli il nome di un bucket e di un oggetto da scaricare. In caso di successo, il metodo restituisce un S3Object. Il bucket e la chiave dell'oggetto specificati devono esistere; in caso contrario si verifica un errore.

È possibile ottenere il contenuto dell'oggetto getObjectContent richiamando ilS3Object. Questo restituisce un S3 ObjectInputStream che si comporta come un oggetto Java InputStream standard.

L'esempio seguente scarica un oggetto da S3 e ne salva il contenuto in un file (utilizzando lo stesso nome della chiave dell'oggetto).

Importazioni

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.S3Object; import com.amazonaws.services.s3.model.S3ObjectInputStream; import java.io.File;

Codice

System.out.format("Downloading %s from S3 bucket %s...\n", key_name, bucket_name); final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { S3Object o = s3.getObject(bucket_name, key_name); S3ObjectInputStream s3is = o.getObjectContent(); FileOutputStream fos = new FileOutputStream(new File(key_name)); byte[] read_buf = new byte[1024]; int read_len = 0; while ((read_len = s3is.read(read_buf)) > 0) { fos.write(read_buf, 0, read_len); } s3is.close(); fos.close(); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } catch (FileNotFoundException e) { System.err.println(e.getMessage()); System.exit(1); } catch (IOException e) { System.err.println(e.getMessage()); System.exit(1); }

Guarda l'esempio completo suGitHub.

Copiare, spostare o rinominare oggetti

Puoi copiare un oggetto da un bucket all'altro. copyObject Richiede il nome del bucket da cui copiare, l'oggetto da copiare e il nome del bucket di destinazione.

Importazioni

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions;

Codice

try { s3.copyObject(from_bucket, object_key, to_bucket, object_key); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } System.out.println("Done!");

Guarda l'esempio completo suGitHub.

Nota

È possibile utilizzarlo copyObject con DeleteObject per spostare o rinominare un oggetto, copiando prima l'oggetto con un nuovo nome (è possibile utilizzare lo stesso bucket sia come origine che come destinazione) e quindi eliminando l'oggetto dalla sua vecchia posizione.

Eliminazione di un oggetto

Usa il deleteObject metodo del client AmazonS3, passandogli il nome di un bucket e di un oggetto da eliminare. Il bucket e la chiave dell'oggetto specificati devono esistere; in caso contrario si verifica un errore.

Importazioni

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions;

Codice

final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { s3.deleteObject(bucket_name, object_key); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

Guarda l'esempio completo suGitHub.

Elimina più oggetti contemporaneamente

Utilizzando il metodo del client AmazonS3, puoi eliminare più oggetti dallo stesso bucket passando i loro nomi al link: deleteObjects sdk-for-java metodo /v1/reference/com/amazonaws/services/s3/model/ .html. DeleteObjectsRequest

Importazioni

import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3;

Codice

final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.DEFAULT_REGION).build(); try { DeleteObjectsRequest dor = new DeleteObjectsRequest(bucket_name) .withKeys(object_keys); s3.deleteObjects(dor); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }

Guarda l'esempio completo suGitHub.