Eliminación de un bucket - Amazon Simple Storage Service

Eliminación de un bucket

Puede eliminar un bucket vacío de Amazon S3. Para obtener información acerca de cómo vaciar un bucket, consulte Vaciar un bucket.

Puede eliminar un bucket mediante la consola de Amazon S3, la AWS Command Line Interface (AWS CLI), los SDK de AWS o la API de REST de Amazon S3.

importante

Antes de eliminar un bucket, tenga en cuenta lo siguiente:

  • Los nombres de bucket son únicos. Si elimina un bucket, otro usuario de AWS puede utilizar el nombre para un nuevo bucket y, potencialmente, recibir solicitudes destinadas al bucket eliminado. Si desea evitar esto o seguir utilizando el mismo nombre de bucket, no elimine el bucket. Le recomendamos que vacíe el bucket y lo conserve y que, en su lugar, bloquee las solicitudes de bucket según sea necesario.

  • 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 para el equilibrador de carga clásico en la Guía del usuario para equilibradores de carga clásicos y Registros de acceso para el equilibrador de carga de aplicación en la Guía del usuario para equilibradores de carga de aplicación.

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úrese de que el bucket esté vacío. Para obtener información acerca de cómo vaciar un bucket, consulte Vaciar un bucket.

  • Asegúrese de que no haya ningún punto de acceso asociado: solo se pueden eliminar buckets que no tengan ningún punto de acceso de S3 ni puntos de acceso entre regiones asociados en la misma cuenta. Antes de eliminar el bucket, elimine los puntos de acceso de la misma cuenta que estén conectados al bucket.

  • Políticas de control de servicio (SCP) y 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 más información acerca de las políticas de control de servicios y políticas de control de recursos en la Guía del usuario de AWS Organizations.

  • Permisos s3:DeleteBucket: si no puede eliminar un bucket, trabaje con el administrador de IAM para confirmar que tiene permisos 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. Para obtener información sobre la resolución de problemas, consulte Solución de problemas de errores de acceso rechazado (403 Forbidden) en Amazon S3.

  • Instrucción s3:DeleteBucket Deny: si tiene permisos s3:DeleteBucket en la política de IAM y no puede eliminar un bucket, la política de buckets podría incluir una instrucción Deny para s3:DeleteBucket. Los buckets creados por AWS Elastic Beanstalk 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.

Requisitos previos

Para poder eliminar un bucket, debe vaciarlo. Para obtener información acerca de cómo vaciar un bucket, consulte Vaciar un bucket.

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

  2. En el panel de navegación izquierdo, elija Buckets de uso general o Buckets de directorio.

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

  4. 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 mediante la selección del botón Vaciar bucket en la alerta de error Este bucket no está vacío y siga las instrucciones de la página Vaciar bucket. A continuación, vuelva a la página Delete bucket (Eliminar bucket) y elimine el bucket.

  5. Para verificar que ha eliminado el bucket, abra la lista Buckets de uso general e introduzca 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 AWS SDK for Java. El código primero elimina los objetos del bucket, y a continuación elimina el bucket. Para obtener información acerca del uso de 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 cómo crear y probar una muestra funcional, consulte Getting Started en la AWS SDK for Java Developer Guide.

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 el bucket 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 de S3 Glacier Flexible Retrieval.

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, el uso del comando rb con el parámetro --force no elimina los objetos con control de versiones, por lo que la eliminación del bucket no se realiza porque el bucket no está vacío. Para obtener más información sobre cómo eliminar objetos con control de versiones, consulte Eliminación de versiones de objetos.

Para utilizar el siguiente comando, reemplace amzn-s3-demo-bucket por el nombre del bucket que desea eliminar:

$ aws s3 rb s3://amzn-s3-demo-bucket --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.