Storage

如何在不停止實例的情況下更改 GCP Compute Engine 上的 Cloud API 訪問範圍

  • January 16, 2020

gcsfuse在 Google Compute Engine 內部使用。我用雲儲存桶安裝了一個文件夾,但無法在其中創建任何文件:

touch t1

有一個錯誤:

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

該問題的解決方案是賦予Cloud API 訪問範圍:儲存:讀/寫

如何在不停止實例的情況下更改 GCP Compute Engine 上的 Cloud API 訪問範圍?請為我提供此問題的解決方案。

提前致謝!

您似乎沒有足夠的 GCS 權限。查看. _ _ gcsfuse如果您在 GCE VM 上使用服務帳戶,請確保設置具有storage-full訪問範圍的 VM。

您可以嘗試以這種方式修復它:

  1. 創建一個服務帳戶(更多資訊在這裡
  2. 為服務帳戶創建一個密鑰,並下載 .json 文件
  3. 為服務帳戶授予適當的角色
  4. 向儲存桶上的服務帳戶授予適當的權限
  5. 將服務帳戶的 .json 憑據上傳到 VM
  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

如果您仍有問題,請使用您的步驟、命令和完整輸出更新您的問題。

引用自:https://serverfault.com/questions/999190