Gestionar la retención de datos en el almacenamiento S3
Automatización de la eliminación de objetos con reglas de ciclo de vida en S3.
El almacenamiento S3 es un sistema de almacenamiento de datos distribuido en el que cada archivo se guarda en un contenedor especializado llamado bucket. El acceso a los datos se gestiona a través de la S3 API, lo que garantiza una compatibilidad total con las herramientas de AWS y otros servicios estándar del sector.
Un lifecycle en S3 es un mecanismo de «configurar y olvidar» que automatiza acciones sobre los objetos a lo largo del tiempo. El caso de uso más habitual es la eliminación automática de archivos tras un número determinado de días o en una fecha predefinida. Esto ayuda a optimizar el espacio de almacenamiento purgando automáticamente datos temporales, logs y backups obsoletos.
Funcionalidades compatibles
- Expiration — elimina objetos después de un número de días definido desde la subida o en una fecha de calendario específica.
- Prefix — limita el alcance de la regla a una ruta concreta (por ej., solo la carpeta
logs/). - Restricciones:
- Valor mínimo — 1 día.
- Hora de ejecución — las eliminaciones se procesan a las
00:00 UTC.
Eliminar todos los objetos después de 30 días
Para configurar una limpieza automatizada de tu bucket, sigue estos pasos:
Paso 1. Creación del archivo de configuración
Crea un archivo local llamado lifecycle.json con la siguiente configuración:
{
"Rules": [
{
"ID": "DeleteAfter 30Days",
"Prefix": "",
"Status": "Enabled",
"Expiration": {
"Days": 30
}
}
]
}
Paso 2. Aplicación de la configuración al bucket
Usa la utilidad AWS CLI para subir la configuración a tu almacenamiento ejecutando el comando aws s3api put-bucket-lifecycle-configuration:
aws s3api put-bucket-lifecycle-configuration \
--bucket your-bucket-name \
--lifecycle-configuration file://lifecycle.json
Paso 3. Verificación de las reglas activas
Para confirmar que la configuración se aplicó correctamente, ejecuta el comando aws s3api get-bucket-lifecycle-configuration:
aws s3api get-bucket-lifecycle-configuration \
--bucket your-bucket-name
Consejo
Si necesitas deshabilitar completamente la eliminación automática, ejecuta simplemente el comando aws s3api delete-bucket-lifecycle --bucket your-bucket-name.
Eliminar archivos en una carpeta específica
Si solo quieres purgar un directorio concreto — como logs/ — define el parámetro Prefix.
{
"Rules": [
{
"ID": "DeleteLogsAfter7Days",
"Prefix": "logs/",
"Status": "Enabled",
"Expiration": {
"Days": 7
}
}
]
}
Una vez aplicada, esta regla solo afectará a los objetos que se encuentren en la ruta logs/....
Eliminar archivos en una fecha específica
Para establecer una fecha límite fija para la retención de datos, usa el parámetro Date.
{
"Rules": [
{
"ID": "DeleteAtMidnight",
"Prefix": "",
"Status": "Enabled",
"Expiration": {
"Date": "2026-12-01T00:00:00Z"
}
}
]
}
Importante
El timestamp debe seguir el formato ISO 8601 (por ej., 2026-12-01T00:00:00Z). Ten en cuenta que las horas, minutos y segundos deben estar configurados estrictamente en 00:00:00.
Claves para una gestión eficiente
Para asegurarte de que tus reglas de lifecycle se comportan como esperas, ten en cuenta estas particularidades técnicas:
-
Retraso en la ejecución: las reglas de lifecycle se evalúan normalmente una vez al día a las
00:00 UTC. Sin embargo, la eliminación física de los datos puede tardar hasta 24 horas después de que haya vencido el período de expiración. -
Comprobación del estado de expiración: puedes ver exactamente cuándo está programada la eliminación de un objeto consultando sus metadatos. Ejecuta el comando
head-objecty busca el headerx-amz-expirationen la respuesta. -
Carpetas virtuales: S3 es un sistema de almacenamiento plano. Las «carpetas» son simplemente prefijos en los nombres de los archivos. Si una regla elimina todos los objetos con un prefijo concreto, la «carpeta» desaparecerá efectivamente de la lista en la consola.
Nota sobre el versionado
Si el versionado está habilitado en tu bucket, las reglas Expiration estándar solo crearán «Delete Markers». Para purgar las versiones antiguas de tus archivos, debes configurar reglas NoncurrentVersionExpiration adicionales.
Consejo avanzado
Antes de aplicar una regla global (con "Prefix": "" vacío) sobre datos de producción, pruébala siempre en un bucket de prueba o en una subcarpeta específica para evitar la pérdida accidental de datos.
Ayuda
¿Tienes dudas o necesitas ayuda? Escríbenos a través del sistema de tickets — siempre estamos aquí para ayudarte!