Creazione, elencazione ed eliminazioneAmazon S3Bucket - 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à.

Creazione, elencazione ed eliminazioneAmazon S3Bucket

Ogni oggetto (file) inAmazon S3deve risiedere all'interno di unsecchio, che rappresenta una raccolta (container) di oggetti. Ogni secchio è conosciuto dachiave(name), deve essere univoco. Per ulteriori informazioni sui bucket e la relativa configurazione, consultaUtilizzo diAmazon S3BucketnellaAmazon Simple Storage ServiceGuida per l'utente di .

Nota

Best practice

Ti consigliamo di abilitare la regola del ciclo di vita AbortIncompleteMultipartUpload sui bucket Amazon S3.

Questa regola indica a Amazon S3 di interrompere l'esecuzione di caricamenti in più parti che non sono stati completati entro un determinato numero di giorni dopo l'avvio. Quando questo limite di tempo impostato viene superato, Amazon S3 interrompe il caricamento ed elimina i dati di caricamento incompleti.

Per ulteriori informazioni, consultaConfigurazione del ciclo di vita per un bucket con funzione VersioninellaAmazon S3Guida per l'utente di .

Nota

Questi esempi di codice presuppongono che tu comprenda il materiale inUtilizzo diAWS SDK for Javae hanno configurato il valore predefinitoAWScredenziali che utilizzano le informazioni inConfigurazioneAWSCredenziali e regione per lo sviluppo.

Creare un bucket

Usa il client AmazonS3createBucketMetodo. Il nuovoBucketrestituisce. LacreateBucketil metodo genererà un'eccezione se il bucket esiste già.

Nota

Per verificare se esiste già un bucket prima di tentare di crearne uno con lo stesso nome, chiamare ildoesBucketExistMetodo. Restituiràtruese il secchio esiste, efalseIn caso contrario, .

Importazioni

import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.AmazonS3Exception; import com.amazonaws.services.s3.model.Bucket; import java.util.List;

Codice

if (s3.doesBucketExistV2(bucket_name)) { System.out.format("Bucket %s already exists.\n", bucket_name); b = getBucket(bucket_name); } else { try { b = s3.createBucket(bucket_name); } catch (AmazonS3Exception e) { System.err.println(e.getErrorMessage()); } } return b;

Vedi l'esempio completo su GitHub.

Creazione di un elenco di bucket

Usa il client AmazonS3listBucketMetodo. In caso positivo, un elenco diBucketrestituisce.

Importazioni

import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.Bucket; import java.util.List;

Codice

List<Bucket> buckets = s3.listBuckets(); System.out.println("Your {S3} buckets are:"); for (Bucket b : buckets) { System.out.println("* " + b.getName()); }

Vedi l'esempio completo su GitHub.

Eliminazione di un bucket

Prima di eliminare unAmazon S3bucket, occorre accertarsi che il bucket sia vuoto o che si verifichi un errore. Se disponi di unsecchio versione, occorre eliminare anche gli eventuali oggetti con versione associati al bucket.

Nota

LaEsempio completoinclude ciascuno di questi passaggi in ordine, fornendo una soluzione completa per eliminare unAmazon S3secchio e il suo contenuto.

Rimuovere oggetti da un bucket senza versione prima di eliminarlo

Usa il client AmazonS3listObjectsMetodo per recuperare l'elenco di oggetti edeleteObjectper eliminarne ciascuno.

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.*; import java.util.Iterator;

Codice

System.out.println(" - removing objects from bucket"); ObjectListing object_listing = s3.listObjects(bucket_name); while (true) { for (Iterator<?> iterator = object_listing.getObjectSummaries().iterator(); iterator.hasNext(); ) { S3ObjectSummary summary = (S3ObjectSummary) iterator.next(); s3.deleteObject(bucket_name, summary.getKey()); } // more object_listing to retrieve? if (object_listing.isTruncated()) { object_listing = s3.listNextBatchOfObjects(object_listing); } else { break; } }

Vedi l'esempio completo su GitHub.

Rimuovere gli oggetti da un bucket con versione prima di eliminarlo

Se si sta utilizzando unsecchio versione, è inoltre necessario rimuovere qualsiasi versione memorizzata degli oggetti nel bucket prima che il bucket possa essere eliminato.

Utilizzando uno schema simile a quello utilizzato per la rimozione di oggetti all'interno di un bucket, rimuovi gli oggetti con versione utilizzando il client AmazonS3listVersionsmetodo per elencare tutti gli oggetti con versione e quindideleteVersionper eliminarne ciascuno.

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.*; import java.util.Iterator;

Codice

System.out.println(" - removing versions from bucket"); VersionListing version_listing = s3.listVersions( new ListVersionsRequest().withBucketName(bucket_name)); while (true) { for (Iterator<?> iterator = version_listing.getVersionSummaries().iterator(); iterator.hasNext(); ) { S3VersionSummary vs = (S3VersionSummary) iterator.next(); s3.deleteVersion( bucket_name, vs.getKey(), vs.getVersionId()); } if (version_listing.isTruncated()) { version_listing = s3.listNextBatchOfVersions( version_listing); } else { break; } }

Vedi l'esempio completo su GitHub.

Eliminazione di un bucket vuoto

Dopo aver rimosso gli oggetti da un bucket (inclusi gli oggetti con versione), puoi eliminare il bucket stesso utilizzando il client AmazonS3deleteBucketMetodo.

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.*; import java.util.Iterator;

Codice

System.out.println(" OK, bucket ready to delete!"); s3.deleteBucket(bucket_name);

Vedi l'esempio completo su GitHub.