无法使用 gcsfuse 在 GCP 存储桶中写入文件

Lui*_*uez 6 python fuse bucket google-cloud-platform

我使用以下命令在虚拟机上安装了存储桶:

gcsfuse my-bucket /path/to/mount
Run Code Online (Sandbox Code Playgroud)

之后,我可以使用 Pandas 从 Python 中的存储桶中读取文件,但无法写入文件或创建新文件夹。我尝试使用 Python 并使用 sudo 从终端尝试,但出现相同的错误。

我还尝试过使用存储桶中的 key_file:

sudo mount -t gcsfuse -o implicit_dirs,allow_other,uid=1000,gid=1000,key_file=Notebooks/xxxxxxxxxxxxxx10b3464a1aa9.json <BUCKET> <PATH>
Run Code Online (Sandbox Code Playgroud)

当我运行代码时它没有出现错误,但我仍然无法在存储桶中写入。

我也尝试过

gcloud auth login
Run Code Online (Sandbox Code Playgroud)

但仍然有同样的问题。

Neb*_*tic 2

不久前我也遇到了同样的事情,这真的很令人困惑。您必须为虚拟机设置正确的访问范围,以便任何使用该虚拟机的人都能够调用存储 API。文档显示虚拟上存储的默认访问范围是只读的:

当您创建新的 Compute Engine 实例时,系统会自动为其配置以下访问范围:

  • 对云存储的只读访问:https://www.googleapis.com/auth/devstorage.read_only

您所要做的就是更改此范围,以便您也能够从虚拟机写入存储桶。您可以在此处找到不同范围的概述。要将新范围应用到您的虚拟机,您必须首先将其关闭。然后从本地计算机执行以下命令:

gcloud compute instances set-scopes INSTANCE_NAME \
  --scopes=storage-rw \
  --zone=ZONE
Run Code Online (Sandbox Code Playgroud)

如果您转到虚拟机的设置,一直向下滚动,然后选择“为每个 API 设置访问权限”,您可以从门户执行相同的操作。首次创建虚拟机时,您有相同的选项。以下是如何执行此操作的示例:

计算引擎访问范围