image processing - resolucion - Usando EC2 para cambiar el tamaño de las imágenes almacenadas en S3 bajo demanda
tamaño de imagen (2)
Necesitamos publicar la misma imagen en varios tamaños posibles en nuestra aplicación. La biblioteca consta de 10 de miles de imágenes que se almacenarán en S3, por lo que almacenar la misma imagen en todos sus tamaños posibles no parece ideal. He visto algunas menciones en Google que EC2 podría usarse para cambiar el tamaño de las imágenes S3 sobre la marcha, pero estoy luchando para encontrar más información. ¿Podría alguien señalarme en dirección a más información o, idealmente, algunas muestras de código?
Propina
No fue obvio para nosotros al principio, pero nunca servimos imágenes a una aplicación o sitio web directamente desde S3, se recomienda encarecidamente usar CloudFront. Hay 3 razones:
- Costo: CloudFront es más barato
- Rendimiento - CloudFront es más rápido
- Confiabilidad: S3 ocasionalmente no servirá un recurso cuando se lo consulte con frecuencia, es decir, más de 10-20 veces por segundo. Esto nos llevó años depurar ya que los recursos no estarían disponibles al azar.
Lo anterior no es necesariamente fallas de S3, ya que está destinado a ser un almacenamiento y no un servicio de entrega de contenido.
¿Por qué no almacenar todos los tamaños de imagen, suponiendo que no está hablando de cientos de diferentes tamaños posibles? El costo de almacenamiento es mínimo. También podría publicar sus imágenes a través de Cloudfront (o directamente desde S3) de modo que no tenga que usar su servidor de aplicaciones para cambiar el tamaño de las imágenes sobre la marcha. Si sirve muchas de estas imágenes, la cantidad de costo de procesamiento que ahorre (es decir, ciclos de CPU, requisitos de memoria, etc.) al no tener que cambiar el tamaño dinámicamente de las imágenes y procesar las solicitudes de imágenes en su servidor web fácilmente compensaría el costo de almacenamiento.
Lo que necesitas es un servidor de imágenes. Sí, puede alojarse en EC2. Estos enlaces deberían ayudar a comenzar: https://github.com/adamdbradley/foresight.js/wiki/Server-Resizing-Images http://en.wikipedia.org/wiki/Image_server