我正在开发一个将在AWS上的弹性环境中运行的应用程序(具有自动扩展的Ec2实例)。所有应用程序都是用PHP开发的。
该应用程序的核心是基于在S3存储桶中安全存储文件。由于用户不需要知道它保存在哪里,我认为我可以暂时将该文件存储在EC2实例中,然后使用作业队列(Amazon SQS)将其异步移动到S3,以避免重复等待时间和对s3问题的更好支持(它们不常见,但可能发生)。
我的问题是:
答案 0 :(得分:3)
理想情况下,您不希望主文件服务器在文件上传过程中被绑定(包括应用程序服务器和随后的S3)。
CORS (Cross Origin Resource Sharing)存在以避免这一点。您可以直接从客户端将文件上传到S3,让amazon担心处理来自并发用户的多个上传。它可让您的应用程序执行最佳功能,而无需担心上传本身。
This SO question讨论了同样的问题,并且有一些可自定义的插件,例如精细上传器,可以用进度条等来包装它。
这完全消除了使用任何类型队列的需要。如果您需要在上传后执行某些簿记操作,您可以在上传完成后使用文件信息等对服务器进行ajax调用。它还应解决因自动缩放而删除实例时可能遇到的任何问题因为一切都是客户端。