Eliminación de un bucket de uso general - Amazon Simple Storage Service

Eliminación de un bucket de uso general

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

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 de uso general, tenga en cuenta lo siguiente:

  • los nombres de bucket de uso general son únicos en un espacio de nombres global. Si elimina un bucket, tenga en cuenta que otra Cuenta de AWS puede utilizar el mismo nombre de bucket de uso general para un bucket nuevo y, por tanto, puede recibir potencialmente 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. En el caso de los buckets que ya no se utilicen activamente, recomendamos vaciar el bucket de todos los objetos para minimizar costos y retener el propio bucket.

  • Cuando elimine un bucket de uso general, es posible que este no se elimine instantáneamente. En su lugar, Amazon S3 pone en cola el bucket para eliminarlo. Dado que Amazon S3 está distribuido en varias Regiones de AWS, el proceso de eliminación tarda un tiempo en propagarse por completo y lograr coherencia en todo el sistema.

  • 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 uso general 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 Vaciado de un bucket de uso general.

  • 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.

  • Asegúrese de que dispone del permiso s3:DeleteBucket: si no puede eliminar un bucket, colabore con el administrador de IAM para confirmar que dispone del permiso 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.

  • Compruebe si hay instrucciones s3:DeleteBucket Deny en las políticas de control de servicio (SCP) y de control de recursos (RCP) de AWS Organizations: las SCP y las RCP pueden 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.

  • Compruebe si hay instrucciones s3:DeleteBucket Deny en la política de bucket: si tiene permisos s3:DeleteBucket en la política de usuario de IAM o rol de IAM y no puede eliminar un bucket, es posible que la política de bucket incluya 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

Antes de poder eliminar un bucket de uso general, debe vaciarlo. Para obtener información acerca de cómo vaciar un bucket, consulte Vaciado de un bucket de uso general.

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 el panel de navegación izquierdo, elija Buckets de uso general.

  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 Eliminar bucket, confirme que desea eliminar el bucket introduciendo el nombre del bucket en el campo de texto y, a continuación, elija 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 vaciar y eliminar un bucket de uso general con AWS SDK para Java. El código primero elimina todos los objetos del bucket de uso general y, a continuación, elimina el bucket.

Para ver ejemplos en otros idiomas, consulte Uso de DeleteBucket con un AWS SDK o la CLI en la Referencia de la API de Amazon Simple Storage Service. 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 un ejemplo que funcione, consulte la Guía para desarrolladores de AWS SDK for Java 2.x.

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 de uso general 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.