Excluir um bucket - Amazon Simple Storage Service

Excluir um bucket

Você pode excluir um bucket vazio do Amazon S3. Antes de excluir um bucket, considere o seguinte:

  • Nomes de bucket são exclusivos. Se você excluir um bucket, outro usuário da AWS poderá usar o nome.

  • Se o bucket hospedar um site estático e você tiver criado e configurado uma zona hospedada do Amazon Route 53 conforme descrito em Tutorial: Configurar um site estático usando um domínio personalizado registrado no Route 53, você deverá limpar as configurações da zona hospedada do Route 53 relacionadas ao bucket. Para obter mais informações, consulte Etapa 2: exclua a zona hospedada do Route 53.

  • Se o bucket receber dados de log do Elastic Load Balancing (ELB): recomendamos a interrupção da entrega de logs de ELB para o bucket antes da exclusão. Após excluir o bucket, se outro usuário criar um bucket usando o mesmo nome, os dados de log poderão ser entregues a esse bucket. Para obter informações sobre logs de acesso do ELB, consulte Logs de acesso no Guia do usuário para Classic Load Balancers e Logs de Acesso no Guia do usuário para Application Load Balancers.

Solução de problemas

Se você não conseguir excluir um bucket do Amazon S3, considere o seguinte:

  • Verifique se o bucket está vazio: exclua apenas buckets que não contenham nenhum objeto. Verifique se o bucket está vazio.

  • Verifique se não existe nenhum ponto de acesso associado: só é possível excluir buckets que não tenham nenhum ponto de acesso associado. Exclua todos os pontos de acesso associados ao bucket antes de excluí-lo.

  • Políticas de controle de serviços (SCPs) do AWS Organizations: uma política de controle de serviços pode negar a permissão de exclusão em um bucket. Para receber informações sobre SCPs, consulte Políticas de controle de serviço no Guia do usuário do AWS Organizations.

  • Permissões s3:DeleteBucket: se você não puder excluir um bucket, trabalhe com o administrador do IAM para confirmar que você tem permissões s3:DeleteBucket. Para obter informações sobre como visualizar ou atualizar permissões do IAM, consulte Alteração de permissões de um usuário do IAM no Guia do usuário do IAM.

  • instrução de negação s3:DeleteBucket: se você tiver as permissões s3:DeleteBucket em sua política do IAM e não puder excluir um bucket, a política de bucket poderá incluir uma instrução de negação para s3:DeleteBucket. Os buckets criados pelo ElasticBeanStalk têm uma política que contém essa instrução por padrão. Antes de excluir o bucket, você deve excluir essa instrução ou a política de bucket.

Importante

Nomes de bucket são exclusivos. Se você excluir um bucket, outro usuário da AWS poderá usar o nome. Se você deseja continuar a usar o mesmo nome do bucket, não exclua o bucket. Recomendamos que você esvazie o bucket e mantenha-o.

Para excluir um bucket do S3
  1. Faça login no AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

  2. Na lista Buckets, selecione a opção ao lado do nome do bucket que você deseja excluir e escolha Delete (Excluir) na parte superior da página.

  3. Na página Delete bucket (Excluir bucket), confirme se deseja excluir o bucket inserindo o nome do bucket no campo de texto e escolha Delete bucket (Excluir bucket).

    nota

    Se o bucket contiver objetos, esvazie o bucket antes de excluí-lo selecionando o link empty bucket configuration (configuração de esvaziamento de bucket) no alerta de erro This bucket is not empty (Este bucket não está vazio) e seguindo as instruções na página Empty bucket (Esvaziar bucket). Depois, volte para a página Delete bucket (Excluir bucket) e exclua o bucket.

  4. Para verificar se você excluiu o bucket, abra a lista Buckets e insira o nome do bucket que você excluiu. Se não for possível encontrar o bucket, sua exclusão foi bem-sucedida.

O exemplo a seguir mostra como excluir um bucket usando o AWS SDK for Java. Primeiro, o código exclui os objetos no bucket e, em seguida, exclui o bucket. Para obter mais informações sobre outros AWS SDKs, consulte Ferramentas para a Amazon Web Services.

Java

O exemplo de Java a seguir exclui um bucket que contém objetos. O exemplo exclui todos os objetos e, em seguida, exclui o bucket. O exemplo também funciona para buckets com ou sem versionamento habilitado.

nota

Para buckets sem versionamento habilitado, você pode excluir todos os objetos diretamente e, em seguida, excluir o bucket. Para buckets com versionamento habilitado, você deve excluir todas as versões do objeto antes de excluir o bucket.

Consulte instruções sobre como criar e testar uma amostra funcional em Getting Started no Guia do desenvolvedor do AWS SDK for Java.

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; 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; public class DeleteBucket2 { public static void main(String[] args) { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); // Delete all objects from the bucket. This is sufficient // for unversioned buckets. For versioned buckets, when you attempt to delete // objects, Amazon S3 inserts // delete markers for all objects, but doesn't delete the object versions. // To delete objects from versioned buckets, delete all of the object versions // before deleting // the bucket (see below for an example). ObjectListing objectListing = s3Client.listObjects(bucketName); while (true) { Iterator<S3ObjectSummary> objIter = objectListing.getObjectSummaries().iterator(); while (objIter.hasNext()) { s3Client.deleteObject(bucketName, objIter.next().getKey()); } // If the bucket contains many objects, the listObjects() call // might not return all of the objects in the first listing. Check to // see whether the listing was truncated. If so, retrieve the next page of // objects // and delete them. if (objectListing.isTruncated()) { objectListing = s3Client.listNextBatchOfObjects(objectListing); } else { break; } } // Delete all object versions (required for versioned buckets). VersionListing versionList = s3Client.listVersions(new ListVersionsRequest().withBucketName(bucketName)); while (true) { Iterator<S3VersionSummary> versionIter = versionList.getVersionSummaries().iterator(); while (versionIter.hasNext()) { S3VersionSummary vs = versionIter.next(); s3Client.deleteVersion(bucketName, vs.getKey(), vs.getVersionId()); } if (versionList.isTruncated()) { versionList = s3Client.listNextBatchOfVersions(versionList); } else { break; } } // After all objects and object versions are deleted, delete the bucket. s3Client.deleteBucket(bucketName); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client couldn't // parse the response from Amazon S3. e.printStackTrace(); } } }

Você pode excluir um bucket que contém objetos com a AWS CLI se ele não tiver o versionamento habilitado. Ao excluir um bucket que contém objetos, todos os objetos no bucket são excluídos permanentemente, incluindo objetos que passaram para a classe de armazenamento S3 Glacier.

Se o bucket não tiver o versionamento habilitado, você poderá usar o comando rb (remover bucket) da AWS CLI com o parâmetro --force para excluir o bucket e todos os objetos nele. Esse comando exclui todos os objetos primeiro e, em seguida, exclui o bucket.

Se o versionamento estiver habilitado, os objetos versionados não serão excluídos nesse processo, o que causaria falha na exclusão do bucket porque ele não estaria vazio. Para obter mais informações sobre como excluir objetos com versionamento, consulte Excluir versões de objetos.

$ aws s3 rb s3://bucket-name --force

Para obter informações, consulte Usar comandos do S3 de alto nível com a AWS Command Line Interface no Guia do usuário da AWS Command Line Interface.