如何用ec2创建存储在s3上的图像缩略图,并在完成时与rails通信?

2024-03-29 11:57:54 发布

您现在位置:Python中文网/ 问答频道 /正文

好的,下面是我的设置和我想完成的任务的简要总结:

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

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

  3. 在图像上传到s3并通知rails的时候,我希望rails发送一些post到ec2上的某个地方来创建两个缩略图(110x110和600x600)。

  4. 创建缩略图并将其传输到s3时,我希望ec2上的任何进程都向rails发送一个post,通知缩略图创建完成并在s3上。

实现这一目标的最佳方法是什么?我对knife等工具做了非常简短的介绍,但我对使用ec2或类似的服务一点也不熟悉。

谢谢


Tags: 用户图像服务器应用程序目标s3进程网站
2条回答

对于像我这样查过这个的人,AWS现在提供Lambda

AWS Lambda is a compute service that makes it easy for you to build applications that respond quickly to new information. AWS Lambda runs your code in response to events such as image uploads, in-app activity, website clicks, or outputs from connected devices. You can use AWS Lambda to extend other AWS services with custom logic, or create your own back-end that operates at AWS scale, performance, and security. With AWS Lambda, you can easily create discrete, event-driven applications that execute only when needed and scale automatically from a few requests per day to thousands per second.

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

我将使用的过程如下:

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

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

  3. 生成缩略图后,将使用Amazon SNS(请参见http://aws.amazon.com/sns/)发送通知,并由rails应用程序响应此通知

相关问题 更多 >