如何将 S3 存储桶挂载为本地文件系统?

How to mount S3 bucket as local FileSystem?

我在 AWS 上的 Jupiter-notebook 上有一个 python 应用程序 运行。我将 C-library 加载到我的 python 代码中,该代码需要文件路径。 我想从 S3 存储桶访问此文件。

我尝试使用 s3fs:

s3 = s3fs.S3FileSystem(anon=False)

使用 s3.ls('..') 列出我所有的存储桶文件...到目前为止没问题。但是,我正在使用的库实际上应该在我无法访问的地方使用 s3 变量。我只能传c库的路径。

有没有办法以某种方式安装 s3 存储桶,我不必调用 s3.open(),并且可以只调用 open(/path/to/s3) 是否隐藏在某个地方,s3 存储桶是否真的安装为本地文件系统?

我认为不使用 s3 应该可以像这样工作。因为我无法更改我在内部使用的库来使用 s3 变量...

with s3.open("path/to/s3/file",'w') as f:
      df.to_csv(f)

with open("path/to/s3/file",'w') as f:
      df.to_csv(f)

还是我完全错了?

我使用的 c 库在 python 中作为 DLL 加载,我调用了一个函数:

lib.OpenFile(path/to/s3/file)

我必须将 s3 的路径传递到库 OpenFile 函数中。

如果您希望将 S3 存储桶挂载为文件系统的一部分,请使用 s3fs-fuse

https://github.com/s3fs-fuse/s3fs-fuse

这将使它成为文件系统的一部分,并且常规文件系统功能将按您预期的那样工作。

如果您的目标是 windows,则可以使用 rclonewinfsp 将 S3 存储桶挂载为本地文件系统

简化的步骤是:
rclone config 创建远程
rclone mount remote:bucket * 挂载

https://github.com/rclone/rclone
https://rclone.org/

https://github.com/billziss-gh/winfsp
http://www.secfs.net/winfsp/

可能与这个问题不完全相关,但我敢肯定,很多用户都会来这里。