La AWS SDK for Java versione 1.x è entrata in modalità manutenzione il 31 luglio 2024 e sarà disponibile il 31 end-of-support
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.
Argomenti
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
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
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
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
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
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