0

Я разрабатываю сервер приложений с NodeJS и AWS.API загрузки файлов на EC2 с ELB и S3

Я настраиваю серверную среду с помощью ELB и EC2.

Я использую ELB как балансировщик нагрузки и подключил к нему несколько экземпляров EC2 сервера приложений.

И один экземпляр EC2 используется для MongoDB.

Мой вопрос касается запроса, включая загрузку файла.

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

Грубое решение заключается в том, что если серверы приложений принимают файл от клиента, переместите его на S3 и удалите файл на сервере приложений.

Но тогда это приведет к некоторым потерям производительности, и я не чувствую, что это чистый способ.

Это лучший способ? или есть другой способ его решения.

Я думаю, что это лучший способ загрузить файл на S3.

Но файл загружен другими данными. (Например, загрузка профиля - имя: String, age: Number, profileImage: File)

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

Есть ли идея лучше?

Пожалуйста, спасите меня.

P.S: Пожалуйста, дайте мне знать, если вы не можете понять мое выражение, потому что я не родной. Если это так, я добавлю некоторые объяснения для этого с моим лучшим!

ответ

0

Вы можете напрямую загрузить на S3 с использованием временных учетных данных, которые позволяют конечному пользователю писать вам ведро.

Существует хорошая статья с подробным кодом для того, чтобы делать то, что вы пытаетесь сделать с node.js here.

ответы, которые ссылаются на внешние ссылки неодобрением на SO, так в двух словах:

  • включают AWS SDK в приложении
  • наделение его соответствующими учетными данными
  • использовать эти учетные данные для создания подписанный URL-адрес с коротким сроком службы
  • предоставляет конечному пользователю подписанный URL-адрес, который затем может использоваться для загрузки, предпочтительно асинхронно с обратной связью с обращением
+0

Спасибо @chris. Я пытаюсь решить проблему с вашим ответом, но есть еще одна проблема. Мне удалось получить предварительно подписанный URL-адрес, и я могу загрузить изображение на S3 прямо из браузера (я тестирую с расширением post-man: google-chrome). Но каждый загруженный файл изображения сломан. Файл был загружен, а его байты такие же, как и оригинальные (я не проверял строго). Но после загрузки файла изображения и его выполнения я получил сообщение-файл, который нельзя открыть.Это сломанный или непризнанный формат файла. (Я загрузил файл png и jpeg). Любое решение для меня? Я борюсь с этим за 2 дня. –

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