【发布时间】:2017-12-14 20:11:04
【问题描述】:
我的 Laravel 应用允许用户上传图片。目前,当用户上传他们的图像时,它们会存储在服务器上的一个临时位置。一个 cron 作业然后修改上传的图像(压缩它们等),并将它们上传到 S3。任何超过 48 小时且未能上传到 S3 的临时文件都会被另一个 cron 作业删除。
我已经设置了 Elastic Beanstalk 环境,但我突然想到将上传的图像存储在实例上的临时目录中是有风险的,因为可以在必要时创建和销毁实例。
那么,我将如何以及在何处存储这些临时文件,以免它们有被实例删除的风险?
【问题讨论】:
-
我碰巧现在正在处理完全相同的问题。我们不能使用 AWS 开发工具包将初始上传指向 S3 存储桶,而不是我们的服务器吗?然后 cron 作业在这个“临时”S3 存储桶上工作,最后上传到永久 S3 存储桶。
-
这可行,但我正在寻找一种方法来避免将临时文件上传到 S3,如果可能的话(以避免相关成本)。
-
啊,使用 Elastic Beanstalk扩展和故障恢复的好处。该文件必须放在某个地方,其他选项将是由您直接控制的独立 ec2 实例(因此您知道它不会被关闭),文件托管服务,例如imgur 也许?,但这些当然也有相关的成本。
-
我所做的所有研究都指向必须使用 S3,因此除非有人另有说明,否则我很可能不得不使用它。绝对不想使用其他文件托管服务...感觉很脏。
-
考虑将原件直接上传到 S3,这样您就不必通过服务器代理上传。还可以考虑使用基于事件的 Lambda 函数将图像从其原始源格式和位置转换为您想要的格式和位置。
标签: laravel amazon-web-services laravel-5 amazon-s3 amazon-elastic-beanstalk