Skip to main content

设置对象存储

Access Key 和 Secret Key

如果你的云服务商支持为虚拟主机绑定对象存储访问策略,实现免密钥访问(类似 AWS IAM),则在 juicefs authjuicefs mount 时可以省略密钥(留空)。详情参考 juicefs auth

对于追求易用的用户,我们推荐为 API 密钥赋予完整的读写权限,包括创建桶(CreateBucket)的权限,让客户端可以在初次挂载时自动为你创建存储桶。

但是对于有着严格安全条例、希望使用最小权限的用户,JuiceFS 需要的最小权限是 HeadObject|GetObject|PutObject|DeleteObject。可以把访问权限限制在指定存储桶(默认为 juicefs-<VOL_NAME>)及指定前缀(固定使用文件系统名称)的资源范围内。在以最小权限运行时,JuiceFS 将无法为你创建对象存储桶,你需要自行创建。

提示
  1. 由于 JuiceFS 客户端需要执行后台任务,比如碎片合并,因此即便使用只读令牌挂载,客户端也需要 PutObjectDeleteObject 权限来执行这些后台任务。如果希望只读客户端真正以「只读」方式访问对象存储桶,那么需要为客户端禁用后台任务,详见「客户端访问令牌」
  2. 如果需要导入文件,或者启用了「跨区域复制」功能,则还需要 ListObjects 权限。

常用对象存储

Amazon S3

查看「AWS 安全凭证」。如果已经使用 IAM 角色为 Amazon EC2 实例上运行的应用程序授予权限,则可以在 juicefs mount 时省略密钥。

如果使用密钥,访问权限策略示范如下:

{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:HeadObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::juicefs-example/example/*"
]
}
]
}

Google 云存储

首先要在 Google Cloud Platform 创建一个项目(Project),记住项目的 Project ID:

GCP-project-ID

然后下载安装 Cloud SDK:

curl https://sdk.cloud.google.com | bash

安装完成后运行:

gcloud auth application-default login

根据提示完成登录认证。到此就完成了 GCP 平台认证,保存下认证信息。

接下来就可以执行 juicefs mount 挂载 JuiceFS 了,挂载时会要求输入 Project ID(也可以用 GOOGLE_CLOUD_PROJECT 环境变量来指定)。

如果是在 Compute Engine 的虚拟机里面使用 JuiceFS,推荐给虚拟机加上存储的完整访问权限,则不需要手动再授权。

Azure Blob 存储

JuiceFS 目前只在 Microsoft Azure 中国区 提供服务,如果需要其他服务区可以联系我们开通。

当 JuiceFS 使用 Azure Blob Storage 作为数据存储时,需要现在 Azure 中创建一个存储帐户。在左侧导航的“所有服务”中找到“存储帐户”。

Azure-storage-account

进入“存储帐户”创建一个新的,其中“名称”在挂载 JuiceFS 时需要提供,帐户类型选择“Blob 存储”。

Azure-create-storage-account

进入刚创建的存储帐户,可以看到“访问密钥”,两个密钥都可以用于 JuiceFS 挂载。

Azure-storage-access-key

Backblaze B2

首先创建一个拥有读写权限的 Application Keys

JuiceFS 需要 master application key 才能创建桶。建议手动创建一个名字为 juicefs-Name 的桶(Name 表示 JuiceFS 文件系统的名字),然后创建一个有这个桶的读写权限的 Application Key。

IBM 云对象存储

需要 API Key 和 资源 ID 来访问对象存储,查看 Retrieving your instance ID

DigitalOcean Spaces

查看 How To Create a DigitalOcean Space and API Key

Wasabi

查看 Creating a Root Access Key and Secret Key

阿里云 OSS

进入对象存储的控制台,可以在右侧看到 Access Key 入口:

aliyun-oss-key-1

创建一个 Access Key 用于 JuiceFS 挂载:

aliyun-oss-key-2

访问权限策略示范如下:

{
"Statement": [
{
"Action": [
"oss:DeleteObject",
"oss:GetObject",
"oss:HeadObject",
"oss:PutObject"
],
"Effect": "Allow",
"Resource": [
"acs:oss:*:*:juicefs-example/example/*"
]
}
],
"Version": "1"
}

腾讯云 COS

使用腾讯云 COS 时,挂载需要额外提供 APPID,因此我们推荐在创建文件系统时,就将 APPID 填入 Bucket 字段,形如 {bucket}-{APPID}。如果你没有在创建文件系统时指定 APPID,那么在挂载的时候,JuiceFS 还会交互式地要求你额外输入 APPID。此外,APPID 也可以通过 juicefs auth--bucket 参数来指定,格式同 {bucket}-{APPID}

进入腾讯云控制台,APPID 在 账号信息 中查看。点击右上角账号的下拉菜单,可以看到账号信息入口,

tencent-account-appid

Secret ID 和 Secret Key 需要在 API 密钥管理 中查看或创建。

tencent-keys

访问权限策略示范如下:

{
"Statement": [
{
"Effect": "Allow",
"Action": [
"cos:DeleteObject",
"cos:GetObject",
"cos:HeadObject",
"cos:PutObject"
],
"Resource": [
"qcs::cos:ap-guangzhou:uid/1250000000:juicefs-example-1250000000/example/*"
]
}
],
"Version": "2.0"
}

华为云 OBS

查看获取华为云访问密钥

百度云 BOS

对象存储密钥在顶部导航右上角的账号下拉菜单中,点击“安全认证”进入密钥列表。

baidu-bos-key

金山云 KS3

查看用户访问密钥管理

青云 QingStor

登入青云控制台,在右上角账号图标的下拉菜单中找到 API 密钥

qingcloud-key

七牛云 Kodo

查看怎么获取或者找到 Access Key 和 Secret Key

UCloud US3

登录 UCloud 控制台,在产品与服务面板中找到 API 产品,里面可以查看有的密钥对。

ucloud-key

Ceph

Ceph 提供两种对接方式:RADOS 和 RGW。前者是 Ceph 底层存储协议,后者则是 S3 网关,暴露标准的 S3 接口。我们推荐通过 RADOS 客户端协议直接对接底层存储,绕过 RGW 能够带来更好的时延。如果需要通过 S3 协议对接,用法与其他 S3 协议对象存储一样。

如果对接底层存储 RADOS,JuiceFS 使用 librados2,支持 Ceph >= 12.2。挂载时需要提供集群名称(比如 ceph), 以及用户名称(比如 client.admin)。

未列出的对象存储

在云服务控制台创建对象存储时,对象存储区域用来设置要使用的对象存储所在的平台和区域。如果列表中没有列出你需要的平台,可以尝试选择一个距离相近平台区域,然后在 Bucket 处填写完整 Endpoint。

比如,你的 MinIO 部署在新加坡的某个数据中心,你希望 JuiceFS 云服务可以使用它作为底层存储。显然,对象存储区域列表中不可能包含你私有的资源信息,此时,按照就近原则,你可以在列表中任意选择一个包含新加坡区域的平台,勾选高级选项,然后在 Bucekt 中输入完整的地址。

other-object-storage

所有 S3 API 兼容的对象存储,比如 Cloudflare R2,都可以采用这种方式接入。