Мы разрабатываем 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, но не считают это непривлекательным вариантом.
может описать рабочий процесс немного больше. пользовательские POST (тогда что) ... есть обработка и позже GET. Просто опишите рабочий процесс больше, поскольку он относится к типичной пакетной обработке, если это он и аутентификация пользователя. также какой стек, php любые лакомые кусочки – Drew
@DrewPierce Спасибо. Да, на данный момент это, как правило, POST, а затем обработка с помощью нашего механизма анализа, и результаты извлекаются с помощью последующих GET.Мы используем SQS для ввода/выключения входов и выходов (в SQS данные не поступают, он просто сообщает процессору обработки о новых представлениях на S3). Наша пользовательская авторизация обрабатывается отдельно нашей платформой управления API, это всего лишь один звонок. О, и мы не используем «популярный» язык ... Хорошо, это Common Lisp :) На самом деле все работает как шарм на самом деле, но мы не в масштабе, и это нас беспокоит , – ChrisM
Вы можете использовать HTTP PUT для загрузки файла на S3 как из вашего API, так и из клиента JavaScript в браузере. CORS решает проблемы с перекрестными доменами, которые не позволяют javaScript-клиентам отправлять HTTP-запросы на S3, но это не мешает вашему API выполнять обычный запрос PUT. –