我正在寻找依赖RESTful API的S3替代方案,这样我就可以简单地插入http://datastore1.example.com/ID之类的链接,并且可以直接下载。 我看过RIAK和Bitcache。它们看起来都很漂亮:http://bitcache.org/api/rest但它们有一个问题。我想成为唯一一个可以上传数据的人。其他任何人都可以通过发送PUT请求来使用我们的数据存储区。
有没有办法配置RIAK,以便每个人都可以“获取”,但不是每个人都可以删除或删除除我之外的文件?您可以推荐其他服务吗?
还添加Bounty:)
要求:
非常高兴:
答案 0 :(得分:6)
Riak的作者recommend将一个HTTP代理放在Riak前面,以便提供访问控制。您可以选择任何您喜欢的代理服务器(例如nginx或Apache),以及您喜欢的任何访问控制策略(例如基于IP地址,HTTP基本身份验证或cookie的授权,假设您的代理服务器可以处理它)。例如,在nginx中,您可以指定limit_except(同样在Apache中使用LimitExcept)。
或者,您也可以直接向Riak添加访问控制。它基于Webmachine,因此一种方法是实现is_authorized。
答案 1 :(得分:3)
根据您提供的信息,我建议使用Eucalyptus(http://open.eucalyptus.com/)。他们有一个S3兼容的存储系统。
答案 2 :(得分:3)
可靠的分布式对象存储RADOS是ceph文件系统的一部分,它提供S3 gateway。
我们使用了Eucalyptus存储系统,Walrus,但我们遇到了可靠的问题。
答案 3 :(得分:1)
如果您正在寻找分布式文件系统,为什么不尝试hadoop hdfs?
http://hadoop.apache.org/common/docs/r0.17.0/hdfs_design.html
有一个可用的Java API:
http://hadoop.apache.org/common/docs/r0.20.2/api/org/apache/hadoop/fs/FileSystem.html
目前,安全性是一个问题 - 至少如果您有权访问终端:
http://developer.yahoo.com/hadoop/tutorial/module2.html#perms
但是你可以部署hdfs,在它前面放置一个应用服务器(使用Java API)(GlassFish)并使用Jersey来构建RESTful API:
如果你有兴趣建造这样的东西,请告诉我,因为我可能很快会建造类似的东西。
您可以使用Cloudera Hadoop Distribution让生活变得更轻松:
http://www.cloudera.com/hadoop/
格尔茨, 学家
答案 4 :(得分:0)
我想你应该在serverfault.com上提出你的问题,因为它与系统有关。 无论如何,我可以建议你mogileFS很好地扩展:http://danga.com/mogilefs/。
答案 5 :(得分:0)
WebDAV就像它获得的RESTful一样,并且有许多实现可以扩展到各种用途。在任何情况下,如果它是REST并且它是HTTP,则服务器支持的任何身份验证方案都应该允许您控制可以上载的人。
答案 6 :(得分:0)
您可以将其自行开发为Web应用程序或现有应用程序的一部分。它将使用HTTP请求,检索其URI组件,将其转换为S3对象名称,并使用getObject()获取其内容(使用可用的S3 SDK之一,例如AWS Java SDK)。
您可以尝试托管解决方案 - s3auth.com(我是开发人员)。这是一个开源项目,你可以看到这个机制是如何在one of its core classes内部实现的。 HTTP请求由服务处理,然后重新转换为Amazon S3内部身份验证方案。