Por qué los precios de solicitudes S3 difieren entre GET y PUT - La economía del I/O de almacenamiento

Este artículo explica por qué las solicitudes GET de S3 cuestan una décima parte de las PUT examinando los costos internos de escritura, la codificación de borrado y las garantías de consistencia, junto con técnicas prácticas para optimizar los cargos por solicitudes.

La brecha de precios GET vs. PUT - Una diferencia de 10x

Bajo el modelo de precios de S3 Standard, las solicitudes PUT/COPY/POST/LIST cuestan 0,005 dólares por cada 1.000 solicitudes, mientras que las solicitudes GET/SELECT cuestan 0,0004 dólares por cada 1.000 solicitudes. Esto significa que PUT es aproximadamente 10 veces más caro que GET. Esta diferencia de precios no es arbitraria; refleja directamente la diferencia en los costos internos de procesamiento entre operaciones de escritura y lectura.

El costo interno de las escrituras - Codificación de borrado y redundancia

S3 usa codificación de borrado para lograr 11 nueves (99,999999999%) de durabilidad. La codificación de borrado divide los datos en fragmentos y genera fragmentos de paridad adicionales, distribuyéndolos en múltiples AZs. Una operación PUT debe: dividir el objeto, calcular fragmentos de paridad, escribir en múltiples dispositivos de almacenamiento en al menos 3 AZs, verificar la escritura exitosa en todos los destinos y actualizar el índice de metadatos. Solo después de completar todo esto se devuelve éxito al cliente. Este proceso es significativamente más costoso computacionalmente que una lectura. Para profundizar en la optimización de costos de almacenamiento, los libros relacionados (Amazon) son una buena referencia.

Diferencias de precios por clase de almacenamiento

Los precios de solicitudes varían significativamente entre las clases de almacenamiento de S3. S3 Standard GET cuesta 0,0004 dólares por 1.000, mientras que Glacier Instant Retrieval GET cuesta 0,01 dólares por 1.000 (25 veces más). Esto refleja el costo adicional de recuperar datos de medios de almacenamiento de menor costo pero mayor latencia. S3 Intelligent-Tiering añade un cargo de monitorización de 0,0025 dólares por 1.000 objetos al mes, pero elimina los cargos de recuperación al mover automáticamente los datos entre niveles.

Técnicas prácticas para optimizar costos de solicitudes

Los costos de solicitudes se vuelven relevantes con cargas de trabajo que leen y escriben grandes cantidades de objetos pequeños. Para optimizar PUT: agrupe objetos pequeños en archivos más grandes antes de subirlos, use multipart upload para objetos grandes (mejora el rendimiento sin costo adicional). Para optimizar GET: implemente caché con CloudFront para reducir solicitudes directas a S3, use S3 Select para extraer solo los datos necesarios sin descargar objetos completos, y considere S3 Object Lambda para transformar datos en vuelo.

Por qué las solicitudes DELETE son gratuitas

Las solicitudes DELETE de S3 son gratuitas. Esto puede parecer sorprendente a primera vista. DELETE también requiere actualización del índice de metadatos y, con versionado habilitado, crear un marcador de eliminación. La razón económica es que AWS quiere incentivar a los usuarios a eliminar datos que ya no necesitan, reduciendo los costos de almacenamiento tanto para el usuario como para AWS. Si DELETE tuviera un costo, los usuarios podrían evitar eliminar datos innecesarios, aumentando el consumo de almacenamiento y los costos operativos de AWS.