【问题标题】:Is there a server that provides an Amazon S3 style API locally? [closed]是否有在本地提供 Amazon S3 样式 API 的服务器? [关闭]
【发布时间】:2012-03-01 21:10:34
【问题描述】:

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

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

如果有一个基本上复制 Amazon S3 的 API 的服务器软件,我们更愿意这样做。这样我们的客户就可以将服务器安装在一个盒子上;我们不需要更改任何代码。那么……有没有这样的软件呢?

【问题讨论】:

  • 现在还有Fake S3。
  • +1 for Fake S3 - 这是我项目中最简单的替代品。更改了两行代码,瞧——我们支持本地文件服务器。许可证看起来也不错。
  • minio.io 似乎更容易。一个可执行文件开始。
  • 刚刚看到这个:s3.scality.com
  • 不幸的是,假 S3 现在已从 MIT 切换到一些非标准的“支持的源”许可证。我必须先请雇主的法律部门批准非标准许可证,然后才能在工作中使用它,我想我宁愿找到其他解决方案

标签: amazon-s3


【解决方案1】:

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

在此处下载二进制文件:https://min.io/download

作为 S3 服务器运行:

minio server path/to/disk/storage

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

【讨论】:

  • 我用过的最糟糕的产品。文档很一般。
  • @Kiwy 请您详细说明 Minio 的可怕之处?我目前正在评估 S3 替代品,我对您的具体体验中发生的事情非常感兴趣,因此我可以选择最适合我需要的技术。
  • @TaylorR 不要误会我的意思,它有效,我做了我想做的事。但是,恕我直言,它的文档非常糟糕。不知何故,它仍然是提供类似 S3 的存储的最简单方法。
  • 我很好奇您是如何从“平庸的文档”或“文档非常糟糕”变成“糟糕的产品”的。
  • Min.io 有 GPLv3 affero 许可证,可能不适合各种商业用例。
【解决方案2】:

这可以通过OpenStack Object Storage (code-named Swift) 实现,它是使用标准化服务器集群创建冗余、可扩展对象存储的开源软件,特别是它最近添加的(可选)S3 API 层,在对象存储之上模拟 S3 REST API。

有关官方文档,请参阅 Configuring Object Storage with the S3 API - S3 APIs on OpenStack Swift 中提供了有关整个设置的更具洞察力和插图的小教程(尽管它建立在更复杂的 Installing an OpenStack Swift cluster on EC2 之上)。


更新

一个值得注意的替代方案是Ceph,它是一个为卓越的性能、可靠性和可扩展性而设计的统一分布式存储系统 - 有趣的是,它提供了所有三种常见的存储模型,即Object Storage、@ 987654327@ 和 File System 以及 RADOS 网关为 RADOS 对象存储提供 Amazon S3 和 OpenStack Swift 兼容接口 [强调我的],有关详细信息,请参阅 RADOS S3 API目前支持的 S3 API 功能。

【讨论】:

  • 我查看了 ceph 网站找不到任何关于价格的信息。看起来不像是免费的。你们知道价格吗?
  • 我在大规模使用 Ceph 时的体验非常糟糕,但我不排除我们的 Ceph 管理员犯错误的可能性。
  • 顺便说一句,第一个链接已更改为openstack.org/software/project-navigator#storage
  • Ceph 网站的 T&C 中有以下段落,这让我相信该软件是免费的。 '您传输给我们服务的信息仍然属于您。但是,您必须同意授予我们在我们服务的正常运行中使用它的许可。如果您向 Ceph 项目贡献源代码,您必须同意它将根据 LGPLv2 或 MIT 许可证(如果适用)获得许可,以便整个社区都能从中受益。如果您贡献文档,它将根据知识共享相同方式共享和署名获得许可。'
【解决方案3】:

我们在本地测试基于 S3 的代码时遇到了问题,实际上实现了一个小型 Java 服务器,它模拟了 S3 对象 API。由于它可能对其他人有用,我们设置了一个 github 存储库以及一个小型网站:http://s3ninja.net - 所有开源代码都在 MIT 许可下。

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

【讨论】:

  • S3ninja 目前不提供文件夹。这对我来说是一个交易破坏者。
  • 这有改变吗? S3ninja 现在支持文件夹吗?我已经查看了源代码但找不到它,但我可能只是想念它。
  • 这是仿真。它不是对 s3 的真正支持
【解决方案4】:

你看过Cloudian吗?我们在公司内部使用它来开发我们的 S3 应用程序。我正在使用免费的社区版,最多可提供 10TB 的存储空间。它有很好的 S3 覆盖率,或者至少涵盖了我的应用程序使用的大部分内容(我使用版本控制和分段上传,所以我认为我的应用程序是先进的)。它生成的 version-ids 和 multipart ids 等与您从 AWS 获得的不同,但 boto 到目前为止没有任何抱怨。它也适用于我尝试过的 s3fs 和其他 s3 存储桶浏览器。

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

【讨论】:

  • 据我所知,Cloudian 不再提供免费套餐,只是短暂试用。
【解决方案5】:

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

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

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

根据我的经验,Skylable 被证明比 Swift 更快、更可靠。它是用 C 和 OCaml 编写的,没有被解释。内存占用真的很低,所以我什至可以在一些便宜的 VPS 上运行一个节点。

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

【讨论】:

    【解决方案6】:

    正如已经提到的:您可以尝试使用 Swift 作为 Amazon S3 替代方案。看看SwiftFS 文件系统,它可以让你挂载存储在 Swift 中的 OpenStack 容器作为本地文件系统。

    【讨论】:

    • SwiftFS 是否与 Amazon S3 兼容?我的代码库已经与 S3 兼容,我正在寻找与 S3 兼容的解决方案,这样我就不需要更改我的代码了。
    • 不,SwiftFS 与 Amazon S3 不兼容,但您可以查看我的另一个项目:RioFS github.com/skoobe/riofs,这是一个与 Amazon S3 存储桶一起运行的用户空间文件系统。
    【解决方案7】:

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

    关于生产就绪型解决方案,有一个名为Riak CS 的出色的 S3 兼容存储软件,它可靠且经过多年生产验证,一个缺点 - 设置不简单。有一些限制,但没有什么大碍,请参阅 api / 兼容性documentation。

    已经为开发和测试提供了一些很好的答案,这对 Docker 用户很有用——docker-riak-cs 图像允许快速启动 Riak CS 实例。我已经使用它进行本地开发和集成测试将近 2 年了,并取得了巨大的成功。

    【讨论】:

      【解决方案8】:

      如果您想拥有一个类似 S3 的 API,但自己托管数据,那么 minio 就在您身边。

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

      https://github.com/localstack/localstack

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

      【讨论】:

        猜你喜欢
        • 2016-11-24
        • 2013-08-20
        • 2010-12-30
        • 2014-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-11
        相关资源
        最近更新 更多