nodejs 在本地文件系统和 Amazon S3 文件系统之间切换的最佳方法是啥?
Posted
技术标签:
【中文标题】nodejs 在本地文件系统和 Amazon S3 文件系统之间切换的最佳方法是啥?【英文标题】:What is the best approach in nodejs to switch between the local filesystem and Amazon S3 filesystem?nodejs 在本地文件系统和 Amazon S3 文件系统之间切换的最佳方法是什么? 【发布时间】:2016-01-31 10:09:13 【问题描述】:我正在寻找在使用本地文件系统和 Amazon S3 文件系统之间切换的最佳方式。
我认为理想情况下我想要两个文件系统的包装器,我可以对其进行编码。配置更改将告诉包装器使用哪个文件系统。这对我很有用,因为开发人员可以使用他们的本地文件系统,但我们的托管环境只需更改配置选项即可使用 Amazon S3。
是否有任何现有的包装器可以做到这一点?我应该编写自己的包装器吗? 还有其他我不知道的方法会更好吗?
【问题讨论】:
【参考方案1】:有一个名为 s3fs 的项目在 S3 之上提供了 POSIX 文件系统功能的子集。没有本地亚马逊提供的方法来做到这一点。
但是,您应该仔细考虑这是否是一个明智的选择。 S3 是一个对象存储,而不是一个常规的文件系统,它具有完全不同的性能和延迟特性。
如果您正在寻找高 iops、NAS 风格的存储,那么 Amazon EFS(预览版)会更合适。或者使用 EBS 卷或 SoftNAS 或 Gluster 滚动您自己的 NFS/CIFS solution。
【讨论】:
s3fs 看起来很有趣!是的,我认为你是对的,我需要真正弄清楚这是否是我项目的正确路线。谢谢!【参考方案2】:我喜欢你构建一个可以使用本地文件系统或 S3 的包装器的想法。我不知道有什么东西可以为你提供这些,但如果你找到任何东西,我肯定很想听听。
另一种方法是使用某种 S3 文件系统挂载,以便您的应用程序始终可以使用标准文件系统 I/O,但如果您的系统将该位置配置为 S3 挂载,则数据可能会写入 S3。我不推荐这种方法,因为我从未听说过没有问题的 S3 安装解决方案。
另一种选择是仅将您的应用程序设计为使用 S3,然后在您的开发环境中使用某种与 S3 兼容的本地对象存储。 this question 有几个答案可以在开发过程中提供与 S3 兼容的服务。
【讨论】:
我喜欢您的建议,即为我们设计 S3 应用程序并使用与 S3 兼容的本地对象存储进行开发。在您发布的链接中,我发现了 S3 Ninja 这似乎很有用。谢谢!【参考方案3】:有一个名为JuiceFS 的服务可以做你想做的事。
根据他们的文档:
JuiceFS 是专门设计的兼容 POSIX 的共享文件系统 在云端工作。
它旨在在云中运行,因此您可以利用便宜的价格 对象存储服务,以经济的方式存储您的数据。
这是一个 与 POSIX 兼容的文件系统,因此您可以无缝访问数据 访问本地文件。
它是一个共享文件系统,因此您可以共享您的 跨多台机器的文件。
s3
是支持的后端之一,您甚至可以将其配置为将文件复制到另一个云上的不同对象存储系统。
【讨论】:
谢谢,很高兴知道这一点!我专门询问 node.js 包装器,但我确实理解这是一个可能的解决方案。我不确定您为什么删除了 node.js 标记。我重新添加了它,以便 node.js 社区的人们可以更轻松地找到这篇文章。以上是关于nodejs 在本地文件系统和 Amazon S3 文件系统之间切换的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
amazon s3 deleteObjects nodejs - 无法正常工作
Amazon S3 POST api,并使用 NodeJS 签署策略
云中的 Zipfile 文件(amazon s3),无需先将其写入本地文件(无写入权限)