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

Zyr*_*ren 9 python amazon-s3 amazon-ec2 node.js aws-lambda

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

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

  2. 上传完成后,会通知rails.

  3. 在图像完成上传到s3并通知rails时,我希望rails将一些帖子发送到位于ec2上的某些内容以创建两个缩略图(110x110和600x600).

  4. 当创建缩略图并将其传送到s3时,我希望ec2上的任何进程都将帖子发送回rails以通知缩略图创建已完成并且在s3上.

完成此任务的最佳方法是什么?我非常简短地看过等工具,但我对使用ec2或类似服务并不熟悉.

谢谢

Nou*_*olf 18

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

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

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


dcr*_*cro 6

我将使用的过程如下:

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

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

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

  • SAAS看起来不是一个合理的解决方案.我的目标是通过将图像从s3传输到ec2,生成缩略图,然后将缩略图从ec2传输到s3来节省s3带宽成本.据我所知,ec2和s3之间的带宽是免费的.有了像transloadit这样的解决方案,我不仅需要为s3和服务器之间的带宽付费,还要支付中间人的费用.当然,我不必自己设置这个东西,但我愿意这样做,只要我能节省带宽成本. (3认同)