Criar, listar e excluir buckets do Amazon S3 - AWS SDK for Java 1.x

O AWS SDK for Java 1.x entrou no modo de manutenção em 31 de julho de 2024 e chegará end-of-supportem 31 de dezembro de 2025. Recomendamos que você migre para o AWS SDK for Java 2.xpara continuar recebendo novos recursos, melhorias de disponibilidade e atualizações de segurança.

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 no GitHub.

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 no GitHub.

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 inclui todas essas etapas em ordem, fornecendo uma solução completa para excluir um bucket do Amazon S3 e o conteúdo.

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 no GitHub.

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 no GitHub.

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 no GitHub.