Quiero resolver el motivo por el que no puedo eliminar mi bucket de Amazon Simple Storage Service (Amazon S3).
Solución
Requisitos previos
Antes de eliminar un bucket de Amazon S3, haga lo siguiente:
- En el caso de los buckets que aloja como un sitio web estático, revise y actualice la configuración de la zona alojada de Amazon Route 53 relacionada con el bucket.
- Si el bucket recibe datos de registro de Elastic Load Balancing (ELB), detenga la entrega de registros al bucket antes de eliminarlo.
Nota: Si elimina el nombre de un bucket, el nombre pasará a estar disponible para todos los usuarios. Si otra cuenta de AWS usa el nombre del bucket, no podrá reutilizar dicho nombre. Como práctica recomendada, no elimine el bucket. En su lugar, vacíelo.
El bucket de S3 no está vacío
Para eliminar un bucket de Amazon S3, el bucket debe estar vacío. Utilice la consola de Amazon S3, la interfaz de la línea de comandos de AWS (AWS CLI) o el SDK para vaciar el bucket de forma manual. Si el bucket es grande y ha configurado el control de versiones, la eliminación manual del objeto llevará mucho tiempo. En este caso, utilice la configuración del ciclo de vida de Amazon S3 para vaciar los buckets.
Nota: Si se muestran errores al poner en marcha comandos de AWS CLI, consulte Solución de errores de AWS CLI. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.
En el caso de los buckets que ha configurado con control de versiones o que se encuentran en estado suspendido, incluya las siguientes reglas en la configuración del ciclo de vida:
- Regla 1: Todas las versiones actuales de los objetos vencen X días después de su creación. Elimine permanentemente todas las versiones no actuales de los objetos transcurridos Y días cuando pasen a ser no actuales.
- Regla 2: Todos los marcadores de eliminación única y las cargas multiparte incompletas vencen después de Z días.
Para los buckets que no ha configurado con el control de versiones, incluya las siguientes reglas en la configuración del ciclo de vida:
- Regla 1: Todas las versiones actuales de los objetos vencen transcurridos X días desde la creación del objeto.
- Regla 2: Todas las cargas multiparte incompletas vencen después de Z días.
Nota: Para eliminar rápidamente el bucket, establezca X, Y y Z en 1 día.
Las reglas del ciclo de vida de Amazon S3 se ejecutan una vez al día. Una vez ejecutadas las reglas del ciclo de vida, todos los objetos que cumplen los requisitos para vencer se marcan para su eliminación. Como las acciones de la política del ciclo de vida son asíncronas, los objetos tardan varios días en eliminarse físicamente del bucket. Una vez que se marca un objeto para su eliminación, ya no se le cobra por el almacenamiento asociado al objeto.
Uso de AWS CLI
Ejecute el siguiente comando para eliminar permanentemente los objetos de un bucket de Amazon S3 que no haya configurado con el control de versiones:
aws s3 rm s3://bucket-name --recursive
Ejecute el siguiente comando para eliminar permanentemente todos los objetos de un bucket de Amazon S3 que esté suspendido o que haya configurado con el control de versiones:
aws s3api delete-objects --bucket bucket-name --delete "$(aws s3api list-object-versions --bucket bucket-name --output=json --query='{Objects: Versions[].{Key:Key,VersionId:VersionId}}')"
Nota: Sustituya bucket-name por el nombre del bucket de Amazon S3.
Uso de la consola de Amazon S3
Siga estos pasos:
- Abra la consola de Amazon S3.
- En el panel de navegación, seleccione el bucket que quiere vaciar y, a continuación, elija Vacío.
- En la página Bucket vacío, introduzca eliminar permanentemente en el campo de texto para eliminar todos los objetos del bucket y, a continuación, seleccione Vacío.
- (Opcional) Revise la página de Bucket vacío: estado para ver el progreso.
Nota: Si las versiones de objetos de un bucket de Amazon S3 están en modo de gobernanza, la identidad de AWS Identity and Access Management (IAM) requiere el permiso s3:BypassGovernanceRetention. Para omitir el modo de gobernanza, debe incluir el encabezado x-amz-bypass-governance-retention:true en su solicitud. En el caso de las solicitudes que realiza en la consola de administración de AWS, la consola aplica el encabezado automáticamente a las solicitudes que tienen los permisos necesarios para omitir el modo de gobernanza.
Durante el periodo de retención, una identidad de IAM no puede eliminar las versiones de objetos que están protegidas en el modo de cumplimiento, incluido el usuario raíz de la cuenta de AWS. Tras el periodo de retención, elimine los objetos que estén protegidos en el cumplimiento. Cuando el bucket esté vacío, elimínelo de Amazon S3.
Los puntos de acceso están asociados al bucket
Antes de eliminar el bucket de Amazon S3, elimine todos los puntos de acceso que estén conectados al bucket. No puede eliminar los buckets que tengan puntos de acceso de S3 o puntos de acceso multirregionales conectados a la misma cuenta.
La identidad de IAM no tiene permisos suficientes
En la política de IAM para la identidad de IAM que usa para eliminar el bucket, conceda los permisos DeleteBucket. O bien, incluya la acción de la API delete-bucket en la política de bucket.
Una instrucción DENY explícita impide la eliminación
Una instrucción DENY explícita tiene prioridad sobre una instrucción ALLOW explícita. Confirme que las políticas de identidad, bucket y nube virtual privada (VPC) de IAM no contengan instrucciones DENY explícitas.
Cuando AWS Elastic Beanstalk crea un bucket, las políticas contienen instrucciones DENY explícitas de forma predeterminada. Antes de eliminar el bucket de Amazon S3, elimine la instrucción DENY explícita o la política de bucket.