使用ec2创build存储在s3上的图像的缩略图,并在完成时与导轨进行通信的优雅方法?

好吧,快速总结一下我的设置和我想完成的事情:

  1. 我有一个轨道2.3.5服务器运行我的网站。 我在我的网站上有一个Flash应用程序,用户可以直接将图像上传到s3。

  2. 上传完成后,会通知Rails。

  3. 在图像完成上传到S3和轨道被通知的地步,我想轨道发送一些post到位于EC2的东西创build两个缩略图(110×110和600×600)。

  4. 当缩略图创build并传输到S3,我想要任何进程的EC2发回一个职位的轨道,以通知缩略图创build完成,并在S3上。

什么是完成这个最好的方法? 我非常简短地看过刀等工具,但对于使用ec2或类似的服务,我并不熟悉。

谢谢

我将使用的过程如下:

  1. 一旦图像上传到S3,rails就会收到通知,并向Amazon SQS队列添加消息(请参阅http://aws.amazon.com/sqs/

  2. 在EC2上运行的后台进程会检查队列并处理所有消息,生成缩略图

  3. 生成缩略图后,会使用Amazon SNS发送通知(请参阅http://aws.amazon.com/sns/ ),并且您的Rails应用程序会响应此通知

对于像我这样的人来说,AWS现在提供了Lambda

AWS Lambda是一种计算服务,可让您轻松构build能够快速响应新信息的应用程序。 AWS Lambda运行您的代码以响应诸如图片上传,应用内活动,网站点击或连接设备的输出等事件。 您可以使用AWS Lambda通过自定义逻辑扩展其他AWS服务,也可以创build自己的后端,以AWS规模,性能和安全性运行。 利用AWS Lambda,您可以轻松创build离散的事件驱动的应用程序,只在需要时才执行,并且每天从几个请求到每秒几千个请求自动扩展。

这是一个很好的演练,完美地回答了这个问题, 处理Amazon S3事件 。 这个想法是有一个node.js包-Labmda得到关于S3 Bucket事件的通知(在我们的例子中创build的对象),获取上传的对象,调整它的大小,然后最后把它保存在其他一些桶中的缩略图。 由于您将拥有一个node.js应用程序,因此在保存缩略图之后,您基本上可以向任何您想要的服务发出任何请求。