离线Amazon S3

13

我想尝试使用Heroku作为我的服务器,但是Heroku不允许在其文件系统中写入数据。相反,我需要使用数据库和像亚马逊S3这样的存储服务来存储上传的图片等内容。

问题是,我经常在没有互联网访问权限或者网络很差的情况下进行开发。因此,开发Amazon S3并不现实。是否有离线版本可用,以便我的本地计算机可以充当S3云,并且在测试/生产环境中可以使用真正的S3?


你能否挂载第二个文件系统,或者只有网络流量可用? - Zachary Ozer
我可以挂载任何我想要的东西(运行Linux),但我可能没有网络访问。因此,最终我想使用API进行开发,但完全离线完成。 - Dmitriy Likhten
有趣的是,这个问题在2010年被关闭,而这个重复的问题在2012年2月提出,但仍然保持开放状态。 - BenMorel
1
投票重新开放。根据我的理解,这个问题显然是符合主题的。http://stackoverflow.com/help/on-topic "程序员常用的软件工具" "一个实际的、可回答的问题,是软件开发中独特的问题"。 - Brad
3个回答

9

虽然这是一个老问题,但我还是想发表一下意见。有一个名为“Fake S3”的工具,它似乎就是专门用来做这件事的。我正准备试用一下。

https://github.com/jubos/fake-s3


1

我的建议是尝试使用s3fs和rsync。以下是它的工作原理:

  1. 将您的s3驱动器挂载到生产机器上的/mnt/sdaX/,并在本地机器上的/mnt/sdaY/上挂载。
  2. 在本地机器上的/mnt/sdaX/创建文件系统。

根据需要在本地机器上进行更改。在适当时候,将/mnt/sdaX/同步到本地盒子上的/mnt/sdaY/。

我知道这很复杂,但我不确定在保持两个地方相同配置的同时还有其他方法可以做到这一点。通常我会建议您启用本地缓存并直接写入s3fs驱动器,但我不确定在重新联机时会发生什么(我很确定它不会同步,但我已经向s3fs开发人员询问)。

最好的祝福,

Zach

LongTail Video开发人员


1
我认为需要的是接口而不是存储本身,因此在离线状态下同步文件系统对于针对S3 API进行开发并没有帮助。 - b_erb
我需要离线开发。我希望我的生产环境在线运行。关键是我想在开发/测试中使用与生产环境相同的API,只是一个使用S3,另一个使用本地。如果我一直在可访问S3的设备上开发,我就不会关心这个问题,所以这与仅同步无关。 - Dmitriy Likhten
在这种情况下,文件系统就是您的接口。您可以使用普通的文件系统API而不是使用S3特定的API,s3fs会将其余部分抽象出来。 - Zachary Ozer

1

请看一下:

可能需要一些工作才能让它们运行起来。我最终想使用node.js编写自己的克隆版本,但它已经远离了原始的S3 API,所以它不会再对您有帮助了。


我关心的不是S3 API,而是拥有一个能够在生产中使用S3并让我在开发过程中离线操作的框架。谢谢,我会调查一下这些内容。你的项目链接是什么? - Dmitriy Likhten

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接