JuiceFS 云服务 S3 网关部署指南
JuiceFS 云服务支持通过 S3 兼容的 RESTful API 对外提供文件系统读写访问,可以使用 s3cmd、AWS CLI、MinIO Client(mc)等客户端或各种语言的 S3 SDK 访问 JuiceFS 上存储的文件。
下载客户端
JuiceFS 云服务 S3 网关需要使用专门的客户端,请根据系统和架构选择合适的版本。
- Linux x86-64
- macOS Intel
sudo wget https://s.juicefs.com/static/Linux/s3-gateway -o /usr/local/bin/s3-gateway && sudo chmod +x /usr/local/bin/s3-gateway
sudo wget https://s.juicefs.com/static/Darwin/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 value | config in JSON (default: "jfs.conf") |
--log value | path of logging |
--address value | bind to a specific ADDRESS:PORT, ADDRESS can be an IP or hostname (default: ":9000") |
--umask value | umask for new file in octal (default: "022") |
--debug | enable debug log |
--quiet | disable startup information |
--anonymous | hide sensitive information from logging |
--json | output server logs and startup information in json format |
--multi-buckets | use top level of directories as buckets |
--keep-etag | keep the etag information of the object |
--help , -h | show help |
--version , -v | print 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 Key
和 Secret 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 Key
和 Secret Key
登录即可。
另外,还可以使用 AWS CLI、MinIO 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
选项指定配置文件。