使用Amazon Web Services接收,存储,传递和删除“文件”

时间:2012-07-13 21:30:22

标签: amazon-s3 amazon-ec2 amazon-web-services amazon-ebs

我在Amazon EC2上安装了Tomcat7服务器。我的一个Servlet收到一个“文件”作为多部分帖子。我需要将这些文件存储在目录结构中,稍后该文件将由另一个servlet重新发送并发送到客户端并从Amazon Web Services中删除。

我的问题 我应该在哪里以及如何存储这些文件,以及如何使用Servlet创建目录结构。

我在看

  1. 尽可能快地访问该文件。
  2. 只要文件不发送给客户端,就需要存储文件。

2 个答案:

答案 0 :(得分:2)

你真的有两个选择:

1 - 将内容存储在本地实例存储中(对于您的实例存储,我强烈推荐EBS over instance store(请参阅this question了解背景信息)。存储和检索文件会更快,并且您可以在需要时随时重新调整实例。

2 - 将文件存储在S3。存储/检索时间将会变慢,但您可以获得“自动”可扩展性,加密,增强的持久性和可用性(无需付出努力)以及通过直接链接公开提供文件的可能性,而无需通过您的Web应用程序。除此之外,由于文件不在特定的EC2实例中,您可以通过添加新实例来扩展Web应用程序,同时将文件集中在S3上。

我的建议是S3,即使您在传送文件时可能会失去一些速度。设置两个环境并进行一些测试。它可能会帮助你做出决定。

希望它有所帮助。

答案 1 :(得分:1)

+1 @ Viccari的回答。它很好地涵盖了选项。

但是,由于您的要求Quickest possible access to the fileStore of the file is need as long as it is not send to the client.

,我不同意使用S3的结论

S3明显慢于基于EBS的存储。由于您要为单个客户端存储给定文件,直到检索一次,因此您不需要S3提供的可伸缩性。实际上,在S3中存储的数据复制到其他可用区之前可能需要相当多的时间。

如果您要存储的数据将多次提供,则S3将是更合理的选择(只要其性能足以满足您的需求)。对于该用例(对于您的用例,不是),我还会将Cloud Front分层放在S3之上。