2013-05-01 4 views
3

Мы разрабатываем API на AWS, используя комбинацию EC2, SQS и S3. Наши интерфейсные серверы находятся на EC2, и мы сохраняем все представленные пользователем данные на S3. Мы не хотим раскрывать наше хранилище S3 конечным пользователям, поэтому все материалы изначально проходят через EC2. Все наши конечные пользователи всегда знают о наших конечных точках API, к которым они относятся POST-данные (обычно это сырой текст, до 1 МБ в настоящее время) и из которых они получают результаты.Прямая загрузка на S3 без CORS (не в браузере)

Мы подозреваем, что эта модель вряд ли будет масштабироваться, поскольку мы приобретаем больше пользователей и по мере увеличения объема данных. Таким образом, мы рассматриваем альтернативные способы управления пользовательскими вводами. Наиболее привлекательным из них является CORS, который S3 now supports, и который позволяет конечным пользователям напрямую загружать на S3 без предварительного буферизации в EC2. Но мы разрабатываем API, а не веб-приложение, и кажется, что CORS всегда потребует какой-то браузер на основе Javascript для выполнения фактической загрузки. Вероятно, у нас будет какой-то интерфейс браузера для больших загрузок, но все, что мы хотим сделать доступными для разработчиков прямо сейчас, это наши конечные точки API.

Так что в основном нам интересно, есть ли другие возможные решения, на которые мы могли бы обратить внимание. Самое главное для нас на данный момент - не публиковать наше бэкэнд-хранилище, так что отображаются только наши URL-адреса API (это также важно, потому что мы хотим сохранить возможность замены нашего внутреннего хранилища на что-то другое, кроме S3 в будущее). Мы также рассмотрели возможность предоставления пользователям возможности использовать свои собственные учетные записи S3, которые, как это делают некоторые API, но не считают это непривлекательным вариантом.

+0

может описать рабочий процесс немного больше. пользовательские POST (тогда что) ... есть обработка и позже GET. Просто опишите рабочий процесс больше, поскольку он относится к типичной пакетной обработке, если это он и аутентификация пользователя. также какой стек, php любые лакомые кусочки – Drew

+0

@DrewPierce Спасибо. Да, на данный момент это, как правило, POST, а затем обработка с помощью нашего механизма анализа, и результаты извлекаются с помощью последующих GET.Мы используем SQS для ввода/выключения входов и выходов (в SQS данные не поступают, он просто сообщает процессору обработки о новых представлениях на S3). Наша пользовательская авторизация обрабатывается отдельно нашей платформой управления API, это всего лишь один звонок. О, и мы не используем «популярный» язык ... Хорошо, это Common Lisp :) На самом деле все работает как шарм на самом деле, но мы не в масштабе, и это нас беспокоит , – ChrisM

+0

Вы можете использовать HTTP PUT для загрузки файла на S3 как из вашего API, так и из клиента JavaScript в браузере. CORS решает проблемы с перекрестными доменами, которые не позволяют javaScript-клиентам отправлять HTTP-запросы на S3, но это не мешает вашему API выполнять обычный запрос PUT. –

ответ

0

Учитывая, вы смотрите на альтернативных решений, обнажая S3 ...

Лично - я бы просто сбросить с сайта на S3 и убедитесь, что сам сайт весы. (для простоты выделите часть очереди) .... но я добавил следующее, учитывая, что вы упомянули о SQS.

  1. Создать небольшой сайт с очень простой API, который сваливает файл в SQS
  2. Создать небольшую услугу, которая обслуживает SQS Создать воспроизводимую установку (с помощью USERDATA/шашлычник/CloudFormation выбрать аромат) для как сервиса и веб-сайт
  3. Зарегистрировать запуска конфигурации, ELB и масштабировать группу для веб-сайта - выберите параметры масштабирования
  4. Зарегистрировать запуска конфигурации и S caling группу для сервис - выберите параметры масштабирования
  5. Обеспечение доступа через IAM и профиль роли для веб-серверов для записи в SQS очереди
  6. Обеспечение доступа через IAM и профиль роли к службе, чтобы читать из SQS очередь
  7. Обеспечение доступа к услуге для записи S3

Это даст вам масштабируемость через веб-сервис, очередь, написание службы и S3.

Смежные вопросы