如何在不停止实例的情况下更改 GCP Compute Engine 上的云 API 访问范围

如何在不停止实例的情况下更改 GCP Compute Engine 上的云 API 访问范围

我在 Google Compute Engine 内部使用gcsfuse。我安装了一个带有云存储桶的文件夹,但无法在其中创建任何文件:

touch t1

出现错误:

touch: cannot touch 't1': Input/output error

这个问题的解决方案是给予云 API 访问范围:存储:读/写

如何在不停止实例的情况下更改 GCP Compute Engine 上的云 API 访问范围?请为我提供此问题的解决方案。

提前致谢!

答案1

您的 GCS 权限似乎不足。请查看文档对于gcsfuse。如果您在 GCE VM 上使用服务帐户,请确保使用访问范围设置 VM storage-full

您可以尝试按照以下方式修复:

  1. 创建服务帐户(更多信息这里
  2. 为服务帐户创建密钥,并下载 .json 文件
  3. 为服务帐户授予适当的角色
  4. 向存储桶上的服务帐户授予适当的权限
  5. 将服务帐户的 .json 凭据上传到虚拟机
  6. gcsfuse定义一个环境变量,该变量包含从命令行调用时服务帐户凭据的路径:

    GOOGLE_APPLICATION_CREDENTIALS = /root/credentials/service_credential_file.json gcsfuse bucket_name /my/mount/point
    

    使用该选项来实现与文档key_file中相同的目标fstab这里

key_file此外,即使您已使用以下命令在 VM 上配置了服务帐户,仍然需要使用环境变量或选项:

gcloud auth activate-service-account --key-file /root/credentials/service_credential_file.json

如果您仍然有问题,请使用您的步骤、命令和完整输出更新您的问题。

相关内容