Descripción del problema: Cargas multiparte incompletas
Amazon S3 es un excelente sistema de almacenamiento para almacenar sus datos: es simple, eficiente y bastante económico. También tiene varias opciones de almacenamiento para distintos casos de uso. Por lo tanto, si utiliza AWS, lo más probable es que también utilice S3.
Uno de los casos más utilizados de Amazon S3 dentro del departamento de I+D es el almacenamiento de algunos artefactos de desarrollo allí: paquetes de código fuente, archivos binarios de instalación e incluso imágenes de máquinas virtuales. Por lo general, se cargan en S3 como resultado de trabajos de CI/CD. Si bien debería haber una política de retención de artefactos definida para evitar el almacenamiento de artefactos no reales, también hay un tipo de optimización extremadamente simple que debería aplicarse a sus buckets de Amazon S3 casi inmediatamente después de su creación: la retención de objetos de carga multiparte (MPU) incompletos.
Los objetos MPU incompletos pueden aparecer si la parte del trabajo de CI/CD que carga artefactos en el depósito S3 falla por algún motivo, como un error de red. En este caso, parte de los datos que ya se han cargado en S3 seguirán almacenados allí, incluso si esa sesión de carga específica no se reanuda. Puede decir que no tiene muchos errores de carga en Amazon S3, pero la experiencia muestra que en un depósito que se utiliza para almacenar artefactos y que existe durante más de un año, hasta el 20 por ciento del almacenamiento total puede estar ocupado por objetos MPU incompletos.
¿Cómo comprobar una MPU incompleta?
Amazon ha lanzado recientemente Amazon S3 Storage Lens – https://docs.aws.amazon.com/AmazonS3/latest/dev/storage_lens.html
Storage Lens tiene niveles Gratis y Avanzado. Para este caso, el nivel Gratis es suficiente.
Vaya a la lente de almacenamiento – https://s3.console.aws.amazon.com/s3/lens
Verá una lista de paneles disponibles, con al menos un panel básico creado por AWS para usted:
Establezca un filtro para una región o un depósito específico si lo necesita:
Y verifique la siguiente tendencia para ver si tiene que preocuparse por el almacenamiento de cargas incompletas:
Si observa que los bytes de cargas multiparte incompletas son una parte significativa del almacenamiento total (más de 3%), debe optimizarlo.
¿Cómo optimizar el almacenamiento MPU incompleto?
La mejor manera de garantizar que un depósito específico no tenga un problema de almacenamiento de MPU incompleto es establecer una política de ciclo de vida para él: https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html
La gestión del ciclo de vida de S3 es un proceso muy potente aunque complicado, pero la creación de una política de MPU es bastante breve y sencilla.
Puede utilizar la consola AWS S3 para hacer eso (verifique la pestaña Administración en la página del depósito S3 específico), así como también utilizar la interfaz de línea de comandos de AWS (AWS CLI).
Para establecer retenciones de MPU, haga lo siguiente:
- Asegúrese de tener AWS CLI instalado y configurado.
- Prepare el siguiente archivo mpu-retention.json:
{ "Reglas": [ { "ID": "Retención de MPU", "Estado": "Habilitado", "Filtro": { "Prefijo": "" }, "AbortIncompleteMultipartUpload": { "DaysAfterInitiation": 7 } } ] }
Describe la política para cancelar todas las sesiones de carga incompletas que no estuvieron activas en los últimos 7 días.
3. Ejecute el siguiente comando para aplicar la política de retención de MPU a tu-cubo:
aws s3api put-bucket-lifecycle-configuration --bucket su-bucket --lifecycle-configuration file://mpu-retention.json
Ahora ha configurado la regla de retención de MPU para su depósito y puede estar seguro de que no volverá a ver el problema. Tenga en cuenta que AWS aplica las políticas de ciclo de vida una vez al día, por lo que las nuevas políticas entrarán en vigor en las próximas 24 horas.
Max BozhenkoEntusiasta y practicante de FinOps, Director de tecnología en Hystax