有没有提供本地Amazon S3风格的API的服务器?

我们制作分布式软件,将一些数据(附件)存储在a)数据库中,或b)Amazon S3。 数据库被使用,因为它不需要其他configuration。 Amazon S3是更好的select。

我们现在想要的是针对不想使用Amazon S3的客户的解决scheme。 我们显然可以使用文件系统,但是如果有多个Web服务器并且这些文件需要被复制,这可能是有问题的; 它还要求我们编写额外的代码来处理可能发生的各种问题。

如果有一个服务器软件实质上复制了Amazon S3的API,我们会优先考虑的。 这样我们的客户可以在一个盒子上安装服务器; 而且我们不需要更改任何代码。 那么…有没有这样的软件呢?

这可以通过OpenStack Object Storage(代码名为Swift)来实现 ,它是开源软件,用于使用标准化服务器集群 ,特别是最近添加的(可选的)S3 API层创build冗余的,可扩展的对象存储模拟S3 REST API对象存储的顶部

请参阅使用S3 APIconfiguration对象存储以获得官方文档 – 在OpenStack Swift上的S3 API (构build于EC2上的更复杂的安装OpenStack Swift集群的基础上)中,提供了有关整个设置的更深入,图示的小教程。


更新

Ceph是一个统一的分布式存储系统,其devise具有出色的性能,可靠性和可扩展性 – 有趣的是它提供了所有三种常见的存储模式,即对象存储 , 块存储和文件系统 , RADOS网关提供Amazon S3和OpenStack Swift兼容接口到RADOS对象存储器[我的重点] ,请参阅RADOS S3 API了解当前支持的S3 APIfunction的详细信息。

迷你将对此有用。 用Go编写,部署简单。

我们遇到了在本地testing基于S3的代码的问题,实际上实现了一个模拟S3对象API的小型Java服务器。 由于它可能对其他人有用,我们设置了一个github回购以及一个小型网站: http : //s3ninja.net – 在MIT许可证下的所有OpenSource。

这个工具非常简单和简约,非常适合testing和开发的目的。 但是,要在生产环境中使用,可能需要添加一些安全性(尽pipeAWS中已经validation了哈希已经在API中validation – 只是GUI完全不受保护)。 此外,它不做任何复制或缩放。 所以这对大型设备来说不是一个好的select。

你看过Cloudian吗? 我们在公司内部使用它来开发我们的S3应用程序。 我正在使用免费的10TB存储的社区版。 这是相当不错的S3覆盖或至less涵盖了我的应用程序使用的大部分东西(我使用版本控制和分段上传,所以我认为我的应用程序是先进的)。 它所生成的版本ID和多部分ID等与从AWS获得的版本不同,但boto目前没有任何抱怨。 它也适用于我尝试过的s3fs和其他s3桶浏览器。

在我看来,这是针对AWS S3 API开发的一个好工具,应该满足您的要求。 您可以将您的应用程序指向本地Cloudian服务器,然后当您准备好进行生产时,您可以将其指向Amazon。 你的里程可能有所不同…祝你好运。

我最近开始使用Skylable来满足我的S3需求,它是免费的(GPL)。 他们的对象存储支持复制,HA和重复数据删除,并且完全兼容S3。 如果您不需要冗余,您可以在单个服务器(铁,虚拟机或容器)上运行他们的软件,或者如果您需要HA,则可以使用更多的节点。

复制品的数量可以在每个桶中select,就像Swift一样。 我开始使用replica 2中的2个节点,并在用户群开始增长时添加更多节点,以应付额外的networkingstream量和空间需求。

添加更多节点非常简单,可以在活动群集上完成。

根据我的经验,Skylablecertificate比Swift更快更可靠。 它用C和OCaml编写,没有解释。 内存占用非常低,所以我甚至可以在一些便宜的VPS上运行一个节点。

最近他们宣布要在Swift API上工作,显然他们的目标是取代Swift。

正如已经提到的那样:您可以尝试使用Swift作为Amazon S3的替代品。 看一下SwiftFS文件系统,它可以让你安装存储在Swift中的OpenStack容器作为本地文件系统。

虽然原来的问题是关于S3似乎生产使用的兼容软件,但许多人对同样的软件感兴趣,但对于本地开发和testing。

关于生产就绪的解决scheme,有一个很好的S3兼容存储软件称为Riak CS ,它已经certificate了多年的稳定和生产,一个缺点 – 安装并不简单。 有一些限制,但没有什么重大的阻碍,请参阅api /兼容性文档 。

对于开发和testing已经有一些很好的答案,这对于Docker用户很有用 – 有docker-riak-cs镜像,可以快速启动Riak CS实例。 我已经用了近2年的时间进行本地开发和集成testing,并取得了很大的成功。