O AWS SDK for Java 1.x entrou no modo de manutenção em 31 de julho de 2024 e chegará end-of-support
As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Criar, listar e excluir buckets do Amazon S3
Cada objeto (arquivo) no Amazon S3 deve residir em um bucket, que representa um conjunto (contêiner) de objetos. Cada bucket é conhecido por uma chave (nome), que deve ser exclusiva. Para obter informações detalhadas sobre os buckets e suas configurações, consulte Trabalhar com buckets do Amazon S3 Guia do usuário do Amazon Simple Storage Service.
nota
Melhor prática
Recomendamos habilitar a regra de ciclo de vida AbortIncompleteMultipartUpload nos buckets do Amazon S3.
Essa regra leva o Amazon S3 a anular multipart uploads que não sejam concluídos dentro de um número específico de dias depois de serem iniciados. Quando o limite de tempo definido é excedido, o Amazon S3 anula o upload e exclui os dados de uploads incompletos.
Para obter mais informações, consulte Configuração do ciclo de vida de um bucket com versionamento no Guia do usuário do Amazon S3.
nota
Esses exemplos de código pressupõem que você entenda o material em Usar o AWS SDK for Java e tenha configurado credenciais da AWS padrão usando as informações em Configurar credenciais e região da AWS para desenvolvimento.
Criar um bucket
Use o método createBucket
do cliente AmazonS3. O novo bucket é retornado. O método createBucket
lançará uma exceção se o bucket já existir.
nota
Para verificar se um bucket já existe antes de tentar criar um com o mesmo nome, chame o método doesBucketExist
. Isso retornará true
se o bucket existir e, do contrário, false
.
Importações
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;
Código
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;
Veja o exemplo completo
Listar buckets
Use o método listBucket
do cliente AmazonS3. Se for bem-sucedido, uma lista de buckets será retornada.
Importações
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;
Código
List<Bucket> buckets = s3.listBuckets(); System.out.println("Your {S3} buckets are:"); for (Bucket b : buckets) { System.out.println("* " + b.getName()); }
Veja o exemplo completo
Excluir um Bucket
Para excluir um bucket do Amazon S3, você deve verificar se o bucket está vazio, ou isso resultará em um erro. Se tiver um bucket versionado, você também deverá excluir todos os objetos versionados associados ao bucket.
nota
O exemplo completo
Tópicos
Remover objetos de um bucket não versionado antes de excluí-lo
Use o método listObjects
de cliente do AmazonS3 para recuperar a lista de objetos e deleteObject
para excluir cada um.
Importações
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;
Código
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; } }
Veja o exemplo completo
Remover objetos de um bucket versionado antes de excluí-lo
Se estiver usando um bucket versionado, também será necessário remover todas as versões armazenadas dos objetos no bucket para o bucket ser excluído.
Usando um padrão semelhante ao usado ao remover objetos dentro de um bucket, remova objetos versionados usando o método listVersions
de cliente do AmazonS3 para listar todos os objetos versionados e deleteVersion
para excluir cada um.
Importações
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;
Código
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; } }
Veja o exemplo completo
Excluir um bucket vazio
Assim que remover os objetos de um bucket (inclusive todos os objetos versionados), será possível excluir o bucket em si usando o método deleteBucket
de cliente do AmazonS3.
Importações
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;
Código
System.out.println(" OK, bucket ready to delete!"); s3.deleteBucket(bucket_name);
Veja o exemplo completo