使用作业队列上传到AWS S3存储桶

纳扎雷诺·洛伦佐(Nazareno Lorenzo)

我正在开发一个将在AWS(具有自动缩放功能的Ec2实例)上的弹性环境中运行的应用程序。所有的应用程序都是用PHP开发的。

该应用程序的核心是基于将文件安全存储在S3存储桶中。由于用户不需要知道该文件保存在哪里,因此我认为可以将该文件临时存储在EC2实例中,然后使用作业队列(Amazon SQS)异步将其移动到S3,以避免重复等待。时间并为s3问题提供更好的支持(虽然不常见,但可能会发生)。

我的问题是:

  1. 这种方法听起来不错还是我遗漏了一些东西?
  2. 从队列处理作业时,工作程序实例将必须连接到原始s3实例,从中检索文件,然后将其上传到s3?
  3. 自动缩放时如何避免出现问题?在将文件存储到S3存储桶之前,可以删除一个实例。
尼基尔

理想情况下,您不希望在文件上传期间将主应用程序服务器捆绑在一起(既捆绑到应用程序服务器,又捆绑到S3)。

存在CORS(跨源资源共享)可以避免这种情况。您可以直接从客户端将文件上传到S3,让Amazon担心处理并发用户的多次上传。它可以让您的应用尽其所能,而不必担心上传本身。

这个SO问题讨论了相同的问题,并且有几个可自定义的插件,例如精美的上传器,可以用进度条等将其包装起来。

这完全消除了使用任何种类的队列的需要。如果您需要在上传后进行某些簿记操作,则只需在上传完成后通过文件信息等对服务器进行ajax调用。它还可以解决由于自动缩放而删除实例时可能遇到的任何问题因为一切都是客户端。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章