Amazon EC2, Elastic Beanstalk: мои изображения исчезают

Я развернул свое PHP-приложение в Amazon EC2, используя экземпляр эластичного бобового стебля. Структура файловой системы моего приложения выглядит следующим образом:

MyApp
|-css
|  |-...
|-js
|  |-...
|-uploads
|  |- image.png
|  |- file.pdf
|  |- ...
|-index.php
|-...

Мое приложение позволяет пользователям загружать изображения. Это простое приложение для веб-управления некоторыми файлами и в настоящее время используется только моим клиентом. Поэтому, когда файлы загружены, я помещаю их под uploads папка, как показано выше.
Проблема в том, что мои файлы долго не хранятся в этой папке. Через день или два я ssh и найти папку загрузки пусто. Я не уверен, что происходит, но я подозреваю, что эластичный бобовый стебель создает новый экземпляр и, следовательно, перезаписывает uploads содержимое папки.

Как мне исправить эту ситуацию?

Благодарю.

3

Решение

Приложения, развернутые на Elastic Beanstalk, не должны иметь состояния. То есть Они не должны хранить состояние на экземплярах EC2, таких как файл или сеанс http в памяти.

AWS Elastic Beanstalk использует автоматическое масштабирование за сценой для добавления или удаления экземпляров из вашего пула, в зависимости от рабочей нагрузки вашего приложения.

При изменении конфигурации AWS Elastic Beanstalk он также может заменить экземпляры на новый.

Рекомендуется хранить состояние вашего приложения в общем хранилище, доступном для всех ваших экземпляров.

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

Посмотрите на ответ на этот вопрос для более подробной информации. Прямая загрузка файлов Amazon S3 из клиентского браузера — раскрытие секретного ключа

Вы также можете реализовать загрузку на стороне клиента без использования формы, напрямую используя SDK Amazon Javascript в браузере.

5

Другие решения

Других решений пока нет …