Amazon EC2,Elastic Beanstalk:我的图像消失了


Amazon EC2, Elastic Beanstalk: My images disappear

我已经使用弹性 beanstalk 实例在 Amazon EC2 中部署了我的 PHP 应用程序。我的应用程序的文件系统结构如下所示:

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

我的应用允许用户上传图像。它是一个简单的应用程序,用于Web管理某些文件,目前仅由我的客户端使用。因此,当文件上传时,我将它们放在uploads文件夹中,如上所示。问题是我的文件不会在此文件夹中持续很长时间。一两天后,我ssh发现上传文件夹是空的。我不确定会发生什么,但我怀疑弹性 beanstalk 确实创建了一个新实例,因此覆盖了uploads文件夹内容。

如何解决这种情况?

谢谢。

部署在 Elastic Beanstalk 上的应用程序应该是无状态的。 即,它们不应在 EC2 实例上存储状态,例如文件或内存中的 http 会话。

AWS Elastic Beanstalk 在后台使用自动扩展来添加或删除池中的实例,具体取决于您的应用程序工作负载。

当您更改 AWS Elastic Beanstalk 配置时,它还可能会将实例替换为新实例。

最佳实践是将应用程序状态存储在共享存储中,可供所有实例使用。

Amazon S3

是一个很好的候选者,您只需稍微修改您的应用程序,让用户浏览器安全地将文件上传到 S3。

查看此问题的答案以获取更多详细信息。从客户端浏览器直接上传 Amazon S3 文件 - 私有密钥泄露

您还可以在不使用表单的情况下直接在浏览器中使用 Amazon Javascript 的开发工具包来实现客户端上传。