Skip to main content

JuiceFS 云服务 S3 网关部署指南

JuiceFS 云服务支持通过 S3 兼容的 RESTful API 对外提供文件系统读写访问,可以使用 s3cmd、AWS CLI、MinIO Client(mc)等客户端或各种语言的 S3 SDK 访问 JuiceFS 上存储的文件。

下载客户端

JuiceFS 云服务 S3 网关需要使用专门的客户端,请根据系统和架构选择合适的版本。

sudo wget https://s.juicefs.com/static/Linux/s3-gateway -o /usr/local/bin/s3-gateway && sudo chmod +x /usr/local/bin/s3-gateway

命令格式

s3-gateway [global options] command [command options] [arguments...]

其中,[global options] 可用的选项包括:

选项描述
--conf valueconfig in JSON (default: "jfs.conf")
--log valuepath of logging
--address valuebind to a specific ADDRESS:PORT, ADDRESS can be an IP or hostname (default: ":9000")
--umask valueumask for new file in octal (default: "022")
--debugenable debug log
--quietdisable startup information
--anonymoushide sensitive information from logging
--jsonoutput server logs and startup information in json format
--multi-bucketsuse top level of directories as buckets
--keep-etagkeep the etag information of the object
--help, -hshow help
--version, -vprint the version

部署网关

在开始之前请确保已经在 JuiceFS 云服务控制台创建了文件系统,并且安装了 JuiceFS 云服务版客户端,详情参考 JuiceFS 云服务快速上手指南

本文假设已经创建了名为 myjfs 的文件系统。

第一步 挂载文件系统

myjfs 挂载到当前用户 HOME 目录下的 myjfs 目录:

juicefs mount myjfs ~/myjfs

第二步 创建配置文件

创建一个目录保存配置文件,例如,创建 juice-s3 并进入该目录:

mkdir juice-s3 && cd juice-s3

将挂载点根目录下的 ~/myjfs/.jfsconfig 文件内容写入 jfs.conf 配置文件:

cat ~/myjfs/.jfsconfig > jfs.conf

第三步 设置访问密钥

通过环境变量设置访问 Access KeySecret Key,例如:

export MINIO_ACCESS_KEY="admin"
export MINIO_SECRET_KEY="password"

第四步 启动 S3 网关

s3-gateway

启动成功会看到类似下面的输出:

2022/03/28 14:39:42.567808 juicefs[57203] <INFO>: connected to meta 47.103.48.104:9308
2022/03/28 14:39:42.574222 juicefs[57203] <INFO>: Cache: /home/herald/.juicefs/cache/jfs8 capacity: 102400 MB
Endpoint: http://192.168.1.128:9000
RootUser: admin
RootPass: password

Browser Access:
http://192.168.1.128:9000

Command-line Access: https://docs.min.io/docs/minio-client-quickstart-guide
$ mc alias set myJuiceFS http://192.168.1.128:9000 admin password

Object API (Amazon S3 compatible):
Go: https://docs.min.io/docs/golang-client-quickstart-guide
Java: https://docs.min.io/docs/java-client-quickstart-guide
Python: https://docs.min.io/docs/python-client-quickstart-guide
JavaScript: https://docs.min.io/docs/javascript-client-quickstart-guide
.NET: https://docs.min.io/docs/dotnet-client-quickstart-guide

S3 网关默认监听 9000 端口,可以使用 --address 调整监听的地址和端口。

例如,只修改监听的端口:

s3-gateway --address :9090

或同时修改监听的地址和端口:

s3-gateway --address 192.168.192.88:9090

访问网关

JuiceFS 云服务 S3 网关启动成功后,在浏览器中直接访问设置的地址,例如上例中的 http://192.168.1.128:9000,打开网页版文件管理器,输入之前设置的 Access KeySecret Key 登录即可。

另外,还可以使用 AWS CLIMinIO MC 等工具以及各种语言版本的 S3 SDK 访问 JuiceFS 云服务 S3 网关。

常见问题

问题一:ls 命令检索不到 .jfsconfig 文件

.jfsconfig 是位于 JuiceFS 文件系统挂载点根目录的虚拟文件,使用 ls 命令看不到它是正常的。但通过 cat 命令可以打印它的内容,假设 ~/myjfs 是 JuiceFS 的挂载点,则可以这样查看它的内容:

cat ~/myjfs/.jfsconfig

问题二:ERROR Unable to validate credentials inherited from the shell environment: Invalid credentials

该错误说明没有设置 S3 网关的访问密钥,请参考 第三步 设置访问密钥

问题三:panic: runtime error: invalid memory address or nil pointer dereference

该错误说明 S3 网关的配置文件不正确,请检查 jfs.conf 文件是否存在并确保其配置内容与文件系统挂载点根目录下的 .jfsconfig 的内容一致。

如果你的配置文件非默认的 jfs.conf,请在启动网关时通过 --conf 选项指定配置文件。