如何将驻留在Amazon ec-2实例中的Tomcat 7 server.xml docbase指向Amazon S3存储桶中的文件夹

时间:2015-10-23 11:18:34

标签: java amazon-web-services amazon-s3 amazon-ec2 tomcat7

在我的本地,我成功地指出了我的docBase - <Context docBase="D:/XYZ" path="/video" />

由于我的基于Java的应用程序将在AWS上托管,我使用Amazon ec2部署我的应用程序和Amazon S3来托管用户的视频,缩略图和个人资料照片。所以我将ec2上的tomcat 7 server.xml条目更改为<Context docBase="http://MyS3EndPointURL" path="/videos" />

然而,当我试图重新启动我的tomcat时,它错误地说 -

java.lang.IllegalArgumentException: Document base /usr/share/tomcat7/webapps/MyS3EndPointURL/Videos does not exist or is not a readable directory

我尝试删除http://,但正如我预期的那样,它也无效。

我知道我必须允许Tomcat访问这些文件夹,但我有这些问题 -

  1. 如何提供此访问权限?
  2. 当用户上传视频时,我的应用程序是否具有对这些文件夹的写入权限?如果不是,如何提供?
  3. 从AWS上提供的任何参考文章中,没有人讨论此问题。 Stackoverflow问题搜索主要是过时的信息,或者人们建议使用另一个静态域。我应该在本周末以BETA模式发布该产品,但由于这个问题我被困住了。任何指针,建议都会救我!

1 个答案:

答案 0 :(得分:0)

如果我了解您的设置,您的应用程序托管在Tomcat上,您希望用户将内容上传到S3,以便您可以通过S3 http端点引用您的资产。

如果是这样,您的应用服务器配置不正确。您的服务器本身不会提供任何视频;该作业已卸载到S3。您需要提供URL重写规则,以便http://www.example.com/videos/指向新的S3 http端点EG http://assets-example-com.s3-website-us-east-1.amazonaws.com/videos/

,而不是像您一样定义docBase。
  

当用户上传视频时,我的应用程序是否具有对这些文件夹的写入权限?如果不是,如何提供。

如果您还没有,则需要使用上述存储桶的相应权限开发上传界面。有关详细信息,请参阅Java Upload File