Загружать прямо на S3 или через EC2?

Я хотел бы создать веб-сервис для iPhone-приложения. Что касается загрузки файлов, мне интересно, что такое стандартная процедура и наиболее экономичное решение. Насколько я вижу, есть две возможности:

  • Клиент > S3: я загружаю файл с iPhone на S3 напрямую (с AWS SDK)
  • Клиент > EC2 > S3: Я загружаю файл на свой сервер (EC2 запускает Django), а затем сервер загружает файл на S3 (как описано в этой сообщении)

Я не планирую изменять файл каким-либо образом. Мне нужно только указать базе данных, чтобы добавить запись. Поэтому, если бы я должен был загрузить файл Client > S3, мне нужно было бы подключиться к серверу в любом случае, чтобы сделать запись в базе данных.

Кажется, как будто EC2 > S3 ничего не стоит, пока они находятся в одном регионе.

Мне было бы интересно узнать, какие преимущества и недостатки перед тем, как начать загрузку файлов.

Ответ 1

Я бы определенно сделал это через S3 по причинам масштабируемости. Правда, данные между S3 и EC2 бывают быстрыми и дешевыми, но загрузка длится долго, а не как обычные веб-запросы. Поэтому вы можете насытить сетевой адаптер в своем экземпляре EC2.

Скорее, верните GUID клиенту, загрузите на S3 с соответствующим набором GUID и Content-Type. Затем вызовите веб-службу/конечную точку Ajax для создания записи DB с ключом GUID после завершения загрузки.