Excluir um bucket - Amazon Simple Storage Service

Excluir um bucket

Você pode excluir um bucket vazio do Amazon S3. Para ter mais informações sobre como esvaziar um bucket, consulte Esvaziar um bucket.

Você pode excluir um bucket usando o console do Amazon S3, a AWS Command Line Interface (AWS CLI), os AWS SDKs ou a API REST do Amazon S3.

Importante

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 para um novo bucket e, potencialmente, receber solicitações destinadas ao bucket excluído. Para evitar que isso aconteça, ou se quiser continuar a usar o mesmo nome do bucket, não exclua o bucket. Recomendamos que você esvazie o bucket e o mantenha, bloqueando quaisquer solicitações de bucket conforme necessário.

  • 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 ter 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 do 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 ter informações sobre os logs de acesso do ELB, consulte Access logs for your Classic Load Balancer no Guia do usuário para Classic Load Balancers e Access logs for your Application Load Balancer 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: só é possível excluir buckets que não contêm nenhum objeto. Verifique se o bucket está vazio. Para ter mais informações sobre como esvaziar um bucket, consulte Esvaziar um bucket.

  • Verifique se não há nenhum ponto de acesso anexado: só é possível excluir buckets que não contêm nenhum ponto de acesso do S3 ou ponto de acesso multirregional anexado na mesma conta. Antes de excluir o bucket, exclua todos os pontos de acesso da mesma conta que estão anexados ao bucket.

  • Políticas de controle de serviços (SCP) e políticas de controle de recursos (RCPs) do AWS Organizations: SCPs e RCPs podem negar a permissão de exclusão em um bucket. Consulte mais informações em Políticas de controle de serviços (SCPs) e em Resource control policies 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. Para obter informações sobre a solução de problemas, consulte Solucionar erros de acesso negado (403 Forbidden) no Amazon S3.

  • Instrução s3:DeleteBucket Deny: se você tiver as permissões s3:DeleteBucket em sua política do IAM e não puder excluir um bucket, talvez a política de bucket inclua uma instrução Deny para s3:DeleteBucket. Os buckets criados pelo AWS Elastic Beanstalk 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.

Pré-requisitos

Para excluir um bucket, é necessário excluir o conteúdo dele. Para ter mais informações sobre como esvaziar um bucket, consulte Esvaziar um bucket.

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. No painel de navegação à esquerda, escolha Buckets de uso geral ou Buckets de diretórios.

  3. Na lista de buckets, selecione a botão de opção ao lado do nome do bucket que deseja excluir e selecione Excluir na parte superior da página.

  4. 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 botão Esvaziar bucket no alerta de erro Este bucket não está vazio e seguindo as instruções na página Esvaziar bucket. Depois, volte para a página Delete bucket (Excluir bucket) e exclua o bucket.

  5. Para verificar se você excluiu o bucket, abra a lista Buckets de uso geral 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 todos os objetos no bucket, depois exclui o bucket. Para ter mais informações sobre como usar 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ê poderá 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 Flexible Retrieval.

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, usar o comando rb com o parâmetro --force não excluirá objetos com versionamento, portanto, a exclusão do bucket falhará porque o bucket não estará vazio. Para obter mais informações sobre como excluir objetos com versionamento, consulte Excluir versões de objetos.

Para usar o seguinte comando, substitua amzn-s3-demo-bucket pelo nome do bucket que deseja excluir:

$ aws s3 rb s3://amzn-s3-demo-bucket --force

Para ter informações, consulte Como usar comandos de alto nível (s3) na AWS Command Line Interface no Guia do usuário da AWS Command Line Interface.