Eliminar un bucket - Amazon Simple Storage Service

Eliminar un bucket

Puede eliminar un bucket vacío de Amazon S3. Antes de eliminar un bucket, tenga en cuenta lo siguiente:

  • Los nombres de bucket son únicos. Si elimina un bucket, otro usuario de AWS podrá utilizar el nombre.

  • Si el bucket aloja un sitio web estático y ha creado y configurado una zona alojada de Amazon Route 53 como se describe en Tutorial: Configuración de un sitio web estático mediante un dominio personalizado registrado con Route 53, debe limpiar la configuración de la zona alojada de Route 53 que está relacionada con el bucket. Para obtener más información, consulte Paso 2: eliminar la zona alojada en Route 53.

  • Si el bucket recibe datos de registro de Elastic Load Balancing (ELB), recomendamos que detenga el envío de registros de ELB al bucket antes de eliminarlo. Después de eliminar el bucket, si otro usuario crea un bucket con el mismo nombre, existe la posibilidad de que sus datos se registro se envíen a ese bucket. Para obtener información acerca de los registros de acceso de ELB, consulte Registros de acceso en la Guía del usuario para balanceadores de carga clásicos y Registros de acceso en la Guía del usuario para balanceadores de carga de aplicaciones.

Solución de problemas

Si no puede eliminar un bucket de Amazon S3, tenga en cuenta lo siguiente:

  • Asegúrese de que el bucket esté vacío: solo se pueden eliminar buckets que no tengan ningún objeto en ellos. Asegúrate de que el bucket esté vacío.

  • Asegúrese de que no haya ningún punto de acceso conectado: solo se pueden eliminar buckets que no tengan ningún punto de acceso conectado a ellos. Elimine todos los puntos de acceso que estén conectados al bucket antes de eliminarlo.

  • Políticas de control de servicio (SCP) de AWS Organizations: una política de control de servicio puede denegar el permiso de eliminación de un bucket. Para obtener información acerca de SCP, consulte Políticas de control de servicios en la Guía del usuario de AWS Organizations.

  • S3: permisos DeleteBucket: si no puede eliminar un bucket, trabaje con el administrador de IAM para confirmar que tiene permisos de s3:DeleteBucket. Para obtener información acerca de cómo consultar o actualizar permisos de IAM, consulte Cambio de permisos de un usuario de IAM en la Guía del usuario de IAM.

  • s3: afirmación de denegación de DeleteBucket: si tiene permisos de s3:DeleteBucket en su política de IAM y no puede eliminar un bucket, la política del bucket podría incluir una afirmación de denegación s3:DeleteBucket. Los buckets creados por ElasticBeanStalk tienen una política que contiene esta instrucción de forma predeterminada. Antes de poder eliminar el bucket, debe eliminar esta instrucción o la política del bucket.

importante

Los nombres de bucket son únicos. Si elimina un bucket, otro usuario de AWS podrá utilizar el nombre. Si desea seguir utilizando el mismo nombre de bucket, no elimine el bucket. Le recomendamos que vacíe el bucket y lo conserve.

Para eliminar un bucket de S3
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En la lista Buckets (Buckets), seleccione la opción situada junto al nombre del bucket que desea eliminar y, a continuación, elija Delete (Eliminar) en la parte superior de la página.

  3. En la página Delete bucket (Eliminar bucket) confirme que desea eliminar el bucket introduciendo el nombre del bucket en el campo de texto y, a continuación, elija Delete bucket (Eliminar bucket).

    nota

    Si el bucket contiene objetos, vacíelo antes de eliminarlo seleccionando el vínculo empty bucket configuration (vaciar configuración de bucket) en la alerta de error This bucket is not empty (Este bucket no está vacío) y siguiendo las instrucciones de la página Empty bucket (Vaciar bucket). A continuación, vuelva a la página Delete bucket (Eliminar bucket) y elimine el bucket.

  4. Para verificar que ha eliminado el bucket, abra la lista Buckets e ingrese el nombre del bucket que ha eliminado. Si no encuentra el bucket, la eliminación se ha realizado correctamente.

En el siguiente ejemplo, se muestra cómo eliminar un bucket con el SDK de AWS para Java. En primer lugar, el código elimina los objetos del bucket, y a continuación elimina el bucket. Para obtener más información sobre otros SDK de AWS, consulte Herramientas para Amazon Web Services.

Java

En el siguiente ejemplo de Java se elimina un bucket que contiene objetos. En el ejemplo se eliminan todos los objetos y, a continuación, se elimina el bucket. El ejemplo funciona también con buckets con o sin control de versiones habilitado.

nota

En buckets sin control de versiones habilitado, puede eliminar todos los objetos directamente y después eliminar el bucket. En buckets con control de versiones habilitado, debe eliminar todas las versiones de objetos antes de eliminar el bucket.

Para obtener instrucciones sobre la creación y comprobación de una muestra funcional, consulte Prueba de los ejemplos de código de Java de Amazon S3.

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(); } } }

Puede eliminar un bucket que contenga objetos con la AWS CLI si no tiene habilitado el control de versiones. Si elimina un bucket que contenga objetos, se eliminarán todos los objetos del bucket de forma permanente, incluidos los objetos que pasaron a la clase de almacenamiento S3 Glacier.

Si el bucket no tiene habilitado el control de versiones, puede utilizar el comando de la AWS CLI rb (eliminar bucket) con el parámetro --force para eliminar el bucket y todos los objetos que contiene. Este comando elimina todos los objetos en primer lugar, y después elimina el bucket.

Si el control de versiones está habilitado, los objetos con control de versiones no se eliminarán en este proceso, lo que provocaría un error en la eliminación del bucket porque el bucket no estaría vacío. Para obtener más información sobre cómo eliminar objetos con control de versiones, consulte Eliminación de versiones de objetos.

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

Para obtener más información, consulte Uso de comandos de S3 de alto nivel con la AWS Command Line Interface en la Guía del usuario de AWS Command Line Interface.