Php 亚马逊EC2,弹性豆茎:我的图像消失了
我已经使用elastic beanstalk实例在AmazonEC2中部署了我的PHP应用程序。我的应用程序的文件系统结构如下所示:Php 亚马逊EC2,弹性豆茎:我的图像消失了,php,amazon-web-services,amazon-ec2,amazon-elastic-beanstalk,Php,Amazon Web Services,Amazon Ec2,Amazon Elastic Beanstalk,我已经使用elastic beanstalk实例在AmazonEC2中部署了我的PHP应用程序。我的应用程序的文件系统结构如下所示: MyApp |-css | |-... |-js | |-... |-uploads | |- image.png | |- file.pdf | |- ... |-index.php |-... 我的应用允许用户上传图片。它是一个简单的应用程序,用于web管理一些文件,目前仅由我的客户端使用。因此,当上传文件时,我会将它们放在up
MyApp
|-css
| |-...
|-js
| |-...
|-uploads
| |- image.png
| |- file.pdf
| |- ...
|-index.php
|-...
我的应用允许用户上传图片。它是一个简单的应用程序,用于web管理一些文件,目前仅由我的客户端使用。因此,当上传文件时,我会将它们放在uploads
文件夹下,如上所示。
问题是我的文件在此文件夹中保存的时间不长。一两天后,我ssh
发现上传文件夹是空的。我不确定会发生什么,但我怀疑elastic beanstalk确实创建了一个新实例,并因此覆盖了上传的
文件夹内容
我如何解决这种情况
谢谢。部署在Elastic Beanstalk上的应用程序应该是无状态的。也就是说,它们不应该在EC2实例上存储状态,例如文件或内存中的http会话 AWS Elastic Beanstalk根据应用程序的工作负载,在后台使用自动缩放功能从池中添加或删除实例 当您更改AWS Elastic Beanstalk配置时,它还可能用新实例替换实例 最佳实践是将应用程序状态存储在一个共享存储中,该存储可供所有实例使用 AmazonS3是一个很好的选择,您只需要稍微修改您的应用程序,让用户浏览器安全地将文件上传到S3 请查看此问题的答案以了解更多详细信息
您还可以通过在浏览器中直接使用AmazonJavaScript的SDK,在不使用表单的情况下实现客户端上载 非常感谢你的洞察力。文件的访问方式会发生什么变化?当前用户必须通过访问。如何将S3文件链接到同一URL以供访问?@MyApplynx您可以为该URL创建一个php控制器,将其转发到S3位置。您的控制器可以使用指向S3的链接而不是指向应用程序的链接构建网页。控制器可以使用S3签名URL来确保只有有效用户才能访问S3