2011-11-04 10 views
9

OK, por lo que un breve resumen de mi configuración y lo que quiero lograr:¿Una forma elegante de crear miniaturas de imágenes almacenadas en s3 con ec2 y comunicarse con los rieles al finalizar?

  1. Tengo un raíles 2.3.5 servidor que ejecuta mi página web. Tengo una aplicación flash en mi sitio donde los usuarios pueden subir imágenes directamente a s3.

  2. Cuando se completa una carga, se notifica a los rieles.

  3. En el punto donde la imagen termina de cargarse a s3 y los rieles son notificados, quiero que los rieles envíen una publicación a algo ubicado en ec2 para crear dos miniaturas (110x110 y 600x600).

  4. Cuando las miniaturas se crean y se transfieren a s3, quiero que cualquier proceso en ec2 envíe una publicación a los rieles para notificar que la creación de miniaturas ha finalizado y están en s3.

¿Cuál es la mejor manera de lograr esto? He examinado herramientas como knife muy brevemente, pero no estoy familiarizado en absoluto con el uso de servicios ec2 o similares.

Gracias

Respuesta

6

El proceso que iba a utilizar es la siguiente:

  1. vez que la imagen se carga en S3, rieles recibe una notificación y se añade un mensaje a un Amazon SQS cola (ver http://aws.amazon.com/sqs/)

  2. un proceso de fondo que se ejecuta en EC2 comprueba la cola y procesa los mensajes, la generación de las imágenes en miniatura

  3. Una vez que se genera una imagen en miniatura, se envía una notificación a utilizar Amazon SNS (ver http://aws.amazon.com/sns/) y sus rieles RESPONS aplicación para esta notificación

+0

Gracias por su respuesta. Estoy buscando esta gema rubí ec2 (https://github.com/rightscale/right_aws) para enviar solicitudes de cola con SQS. De lo que no estoy seguro es de lo que voy a hacer en el lado de ec2. ¿Debo tener un servidor de rieles con right_aws para verificar la cola y luego algo como paperclip para postprocesar la imagen en miniaturas? – Zyren

+0

Tener una barandillas con right_aws y paperclip en EC2 es una opción, pero en realidad no importa lo que está ejecutando en EC2, siempre que pueda sondear la cola de SQS y procesar las imágenes. – dcro

+1

También puede considerar el uso de un proveedor SAAS para gestionar la generación de miniaturas. Una opción de la que ahora soy http://transloadit.com/, pero no los he usado, por lo que no puedo ofrecer ningún comentario sobre su servicio. – dcro

18

para aquellos como yo que se veía esto, AWS ofrece ahora Lambda

AWS Lambda es un servicio de cómputo que le facilita la creación de aplicaciones que responden rápidamente a nueva información. AWS Lambda ejecuta su código en respuesta a eventos como la carga de imágenes, la actividad en la aplicación, los clics en el sitio web o las salidas de los dispositivos conectados. Puede utilizar AWS Lambda para extender otros servicios de AWS con lógica personalizada, o crear su propio back-end que opere a escala AWS, rendimiento y seguridad . Con AWS Lambda, puede crear fácilmente aplicaciones discretas basadas en eventos que se ejecutan solo cuando es necesario y escala automáticamente desde unas pocas solicitudes por día a miles por segundo.

Aquí hay un gran tutorial que responde perfectamente a esta pregunta, Handling Amazon S3 Events. La idea es hacer que un paquete node.js -la Labmda- sea notificado sobre los eventos S3 Bucket (objetos creados en nuestro caso), obtener el objeto cargado, redimensionarlo y finalmente guardarlo en otra categoría para las miniaturas. Como tendrá una aplicación node.js, básicamente puede realizar cualquier tipo de solicitud a cualquier servicio que desee después de guardar la miniatura.

+0

Esta es la solución correcta/más barata https://www.quora.com/What-is-the-best-practice-for-creating-a-thumbnail-on-S3-Bucket/answer/Akbar-Khan-1 aquí Incluí cómo hacerlo –

Cuestiones relacionadas