是否有在本地提供Amazon S3样式API的服务器?[关闭]


68

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

我们现在想要的是为不想使用Amazon S3的客户提供的解决方案。我们显然可以只使用文件系统,但是如果有多个Web服务器并且需要复制文件,则可能会出现问题。它还需要我们编写额外的代码来处理各种可能发生的问题。

我们更希望的是,如果有一块服务器软件实质上复制了Amazon S3的API。这样,我们的客户可以将服务器安装在盒子上。而且我们不需要更改任何代码。那么...那里有这样的软件吗?


14
现在也有Fake S3
本杰明

1
假S3的+1-这是我项目中最简单的替换。更改了两行代码,瞧-我们支持本地文件服务器。执照也不错。
Aleksei Petrenko 2014年

2
minio.io似乎更容易。一个可执行文件开始。
ClojureMost,2013年

3
刚刚看到了这个:s3.scality.com
singh1469'6

3
不幸的是,Fake S3现在已从MIT切换到某些非标准的“支持的源”许可证。在我可以在工作中使用非标准许可证之前,我必须先征求其雇主的法律部门的批准,我想我想找到另一个解决方案,而不是
Simon Kissane

Answers:


32

这可以通过OpenStack对象存储(代号Swift)实现,OpenStack对象存储开源软件,可使用标准化服务器集群创建冗余的,可扩展的对象存储,特别是其最近添加的(可选)S3 API层,该层模拟了S3 REST API。对象存储的顶部

请参阅官方文档中的使用S3 API配置对象存储-在OpenStack Swift的S3 API中提供了有关整个设置的更详尽,有说明的小型教程(尽管该教程基于更复杂的在EC2上安装OpenStack Swift集群)。


更新资料

值得一提的替代方案是Ceph,它是一个统一的分布式存储系统,旨在提供出色的性能,可靠性和可扩展性-有趣的是,它提供了所有三种常见的存储模型,即对象存储块存储文件系统,而RADOS网关提供了Amazon S3和与RADOS对象存储的OpenStack Swift兼容接口[要点],有关当前支持的S3 API功能的详细信息,请参阅RADOS S3 API


我看着ceph网站找不到有关价格的任何信息。它看起来并不免费。你们知道价格吗?
Arash

我对Ceph的大规模体验令人沮丧,尽管我不认为Ceph管理员犯错的可能性。

顺便说一句,第一个链接已更改为openstack.org/software/project-navigator#storage
Evi Song

Ceph网站的条款和条件中包含以下段落,使我相信该软件是免费的。'您传送给我们服务的信息仍然属于您。但是,您必须同意授予我们许可,以在我们的服务正常运行中使用它。如果您为Ceph项目提供源代码,则必须同意它将根据LGPLv2或MIT许可证获得许可,以便整个社区都能从中受益。如果您提供文档,则该文档将根据知识共享与署名共享方式获得许可。
Boidy

45

Minio将对此有用。用Go语言编写,易于部署。

二进制下载在这里:https : //min.io/download

要作为S3服务器运行:

minio server path/to/disk/storage

访问密钥和机密将输出到控制台。


5
我曾经使用过的最恐怖的产品。该文档是平庸的。
Kiwy,

我从未使用过minio服务器,但是客户端非常轻巧和简单。我喜欢手动使用。由于minio,ceph和s3共享相同的API,因此我可以在任何地方使用它。对于调试很有用。
保罗·拉菲特

1
@Kiwy请您详细说明Minio的可怕之处吗?我目前正在评估S3替代产品,我对您的特定经历中发生的事情非常感兴趣,因此我可以根据自己的需求选择最合适的技术。
泰勒R

1
@TaylorR不要误会我的意思,它可以工作,我做了我想做的事。但是,它的文档非常不好,恕我直言。某种程度上,它仍然是提供类似于S3的存储的最简单方法。
6

9
我很好奇您如何从“平庸的文档”或“文档非常糟糕”变成“糟糕的产品”。
丰富

10

我们遇到了在本地测试基于S3的代码的问题,并且实际上实现了一个小型Java服务器,该服务器模仿了S3对象API。因为它可能对其他人有用,所以我们建立了一个github存储库以及一个小型网站:http ://s3ninja.net-麻省理工学院许可下的所有OpenSource。

该工具非常简单和简约,非常适合测试和开发目的。但是,要在生产环境中使用,可能需要增加一些安全性(尽管API中已经验证了AWS哈希值-只是GUI完全不受保护)。此外,它不会进行任何复制或缩放。因此,对于大型设置而言,这不是一个不错的选择。


S3ninja当前不提供文件夹。这对我来说是个大难题。
亚伦·谢夫

这改变了吗?S3ninja现在支持文件夹吗?我已经调查了源,找不到了,但是我可能只是想念它。
Lennard Fonteijn

1
这是模拟。它不是对s3的真正支持
Ivailo Bardarov

7

你看过Cloudian吗?我们在公司内部使用它来开发我们的S3应用程序。我正在使用社区版,该版本免费提供多达10TB的存储空间。它具有相当好的S3覆盖率,或至少涵盖了我的应用程序使用的大多数内容(我使用版本控制和分段上传功能,所以我认为我的应用程序很高级)。它生成的版本ID和多部分ID等与您从AWS获得的版本ID和多部分ID等不同,但到目前为止,boto没有任何投诉。它也可以与s3fs和我尝试过的其他s3存储桶浏览器一起使用。

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


1
据我所知,Cloudian不再提供免费套餐,只是一个简短的试用。
rivimey19年

4

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

就像Swift一样,每个存储桶可以选择副本的数量。我从副本2中的2个节点开始,随着用户群的增长,添加了更多节点,以应对额外的网络流量和空间需求。

添加更多节点确实很容易,并且可以在实时群集上完成。

以我的经验,Skylable被证明比Swift更快,更可靠。它用C和OCaml编写,没有解释。内存占用确实很低,因此即使在某些便宜的VPS上我也可以运行节点。

最近,他们宣布正在开发Swift API,显然他们的目标是取代Swift。


2

如前所述:您可以尝试将Swift用作Amazon S3替代产品。看一下SwiftFS文件系统,它使您可以将存储在Swift中的OpenStack容器挂载为本地文件系统。


SwiftFS与Amazon S3兼容吗?我的代码库已经可以与S3一起使用,并且我正在寻找一种与S3兼容的解决方案,因此无需更改代码。
罗伯特·雷兹

不,SwiftFS与Amazon S3不兼容,但是您可以看一下我的另一个项目:RioFS github.com/skoobe/riofs,它是一个可与Amazon S3存储桶一起运行的用户空间文件系统。
保罗

2

虽然最初的问题是关于(看起来)用于生产的S3兼容软件,但许多人都对同一软件感兴趣,但只限于本地开发和测试。

关于生产就绪型解决方案,有一个很棒的与S3兼容的存储软件,称为Riak CS,它可靠且经过多年生产验证,其中一个缺点–设置不简单。有一些限制,但没有什么大碍事,请参阅api /兼容性文档

对于开发和测试已经有了一些不错的答案,这对Docker用户将非常有用– docker-riak-cs映像可用于快速启动Riak CS实例。我已经将它用于本地开发和集成测试近两年了,并取得了巨大的成功。


0

如果您想拥有类似S3的API但自己托管数据,那么就可以提及minio。

如果要编写与S3交互的服务,但要在本地测试它们的速度,则可以使用Localstack,我认为这里没有提到。它不仅模拟S3,而且还模拟许多其他AWS服务。我不建议将其用于实际的客户文件,因为它是仅用于testinng的内存数据存储。

https://github.com/localstack/localstack

https://bluesock.org/~willkg/blog/dev/using_localstack_for_s3.html

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.