我正在运行一个Google Compute实例,该实例必须能够连接以读写本地安装的存储桶。
此刻,当我进入计算机时,我有权读取目录中的所有文件,但不能写入。
更多细节:
gcloud init
account: PROJECT_NUMBER-compute@developer.gserviceaccount.com
在Google平台上查看IAM时,该IAM具有专有角色,因此它应该能够访问项目中的所有资源。
gcsfuse -o allow_other --file-mode 777 --dir-mode 777 --o nonempty BUCKET LOCAL_DIR
现在查看权限,所有文件都具有(按预期)
ls -lh LOCAL_DIR/
drwxrwxrwx 1 ubuntu ubuntu 0 Jul 2 11:51 folder
但是,当运行一个非常简单的python代码将泡菜保存到这些目录之一中时,出现以下错误
OSError: [Errno 5] Input/output error: FILENAME
如果我使用--foreground标志运行gcsuse,则产生的错误是
fuse: 2018/07/02 12:31:05.353525 *fuseops.GetXattrOp error: function not implemented
fuse: 2018/07/02 12:31:05.362076 *fuseops.SetInodeAttributesOp error: SetMtime: \
UpdateObject: googleapi: Error 403: Insufficient Permission, insufficientPermissions
这很奇怪,因为VM上的帐户具有专有角色。
有人猜想如何克服这个问题吗?
答案 0 :(得分:1)
您的实例需要适当的范围才能访问GCS存储桶。您可以通过控制台查看范围,也可以使用gcloud计算实例描述[instance_name] | grep范围-A 10
您必须具有读/写存储或https://www.googleapis.com/auth/devstorage.read_write