GCloud gcsfuse 权限被拒绝

GCloud gcsfuse permission denied

有人成功使用 gcsfuse 吗?

我已尝试删除对存储桶的所有默认权限, 并设置一个服务帐户:

 gcloud auth activate-service-account to activate serviceaccname

然后运行:

gcsfuse --debug_gcs --foreground cloudbuckethere /backup

gcs: Req 0x0: -> ListObjects() (307.880239ms): googleapi: Error 403: xxxxxx-compute@developer.gserviceaccount.com does not have storage.objects.list access

很奇怪,它抱怨用户 xxxxx-compute 不是我激活的服务帐户:

gcloud auth list

是否显示我当前的服务帐户处于活动状态...

我还向我的 serviceaccname.

授予了管理所有者、管理对象所有者、写入对象、读取对象到存储桶的权限

如果我授予 xxxxx-compute 我的存储桶所有权限,包括旧权限,列表似乎有效。但将任何文件写入目录失败:

googleapi: Error 403: Insufficient Permission, insufficientPermissions

有人有运气吗?

我找到了一个解决方案,不确定这是否是一个好的解决方案,但它有效。

设置服务帐户并下载 JSON 文件。

以存储桶管理员身份使用上述服务帐户名称授予对存储桶的访问权限。

然后运行添加到环境变量中,指向服务JSON文件的路径。

GOOGLE_APPLICATION_CREDENTIALS=/path-to-json/gcloud.json gcsfuse --debug_gcs --foreground bucketname /path-to-mount

另请注意,默认情况下它可能会在 tmp 目录中使用大量 space。添加标志:

... --temp-dir=/someotherpath

如果您在 /tmp 中限制了 space,那将会很有帮助。