Элегантный способ создать миниатюры изображений, сохраненных на s3, с помощью ec2 и пообщаться с рельсами на финише? - PullRequest
9 голосов
/ 04 ноября 2011

Хорошо, итак, краткая сводка моей установки и того, что я хочу сделать:

  1. У меня есть сервер rails 2.3.5, на котором работает мой веб-сайт.У меня есть флэш-приложение на моем сайте, где пользователи могут загружать изображения прямо на s3.

  2. Когда загрузка завершена, рельсы уведомляются.

  3. В тот момент, когда изображение заканчивается загрузкой на s3, и rails уведомляется, я хочу, чтобы rails отправила какое-то сообщение на что-то, расположенное на ec2, для создания двух миниатюр (110x110 и 600x600).

  4. Когда миниатюры создаются и передаются на s3, я хочу, чтобы любой процесс на ec2 отправлял сообщение обратно в rails, чтобы уведомить, что создание миниатюр завершено и находятся на s3.

Каков наилучший способ сделать это?Я очень кратко рассмотрел такие инструменты, как нож , но я совсем не знаком с использованием ec2 или аналогичных услуг.

Спасибо

Ответы [ 2 ]

18 голосов
/ 12 марта 2015

для таких, как я, которые искали это, теперь AWS предлагает Лямбда

AWS Lambda - это вычислительный сервис, который упрощает создание приложения, которые быстро реагируют на новую информацию. AWS Lambda работает ваш код в ответ на такие события, как загрузка изображений, в приложении активность, клики на веб-сайте или выходные данные с подключенных устройств. Вы можете использовать AWS Lambda для расширения других сервисов AWS с помощью собственной логики или создать свой собственный бэкэнд, работающий с масштабом, производительностью и безопасность. С AWS Lambda вы можете легко создавать дискретные, управляемые событиями приложения, которые выполняются только при необходимости и масштабируются автоматически от нескольких запросов в день до тысяч в секунду.

Вот отличное прохождение, которое отлично отвечает на этот вопрос, Обработка событий Amazon S3 . Идея состоит в том, чтобы иметь пакет node.js - Labmda - получать уведомления о событиях S3 Bucket (объект создается в нашем случае), получать загруженный объект, изменять его размер, а затем, наконец, сохранять его в каком-то другом хранилище для миниатюр. Так как у вас будет приложение node.js, вы можете делать любые запросы к любому сервису, который захотите, после сохранения эскиза.

6 голосов
/ 04 ноября 2011

Я бы использовал следующий процесс:

  1. Как только изображение загружено на S3, rails получает уведомление и добавляет сообщение в очередь Amazon SQS (см. http://aws.amazon.com/sqs/)

  2. Фоновый процесс, запущенный в EC2, проверяет очередь и обрабатывает любые сообщения, генерируя миниатюры

  3. После создания эскиза уведомление отправляется с использованиемAmazon SNS (см. http://aws.amazon.com/sns/) и ваше приложение rails, отвечающее на это уведомление

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...