如何在不停止實例的情況下更改 GCP 計算引擎上的雲端 API 存取範圍

如何在不停止實例的情況下更改 GCP 計算引擎上的雲端 API 存取範圍

gcsfuse在 Google Compute Engine 內部使用。我安裝了一個帶有雲端儲存桶的資料夾,但是無法在其中建立任何檔案:

touch t1

有錯誤:

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

問題的解決方案是給出雲端API存取範圍:儲存:讀/寫

如何在不停止實例的情況下更改 GCP 運算引擎上的雲端 API 存取範圍?請向我提供此問題的解決方案。

先致謝!

答案1

您的 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

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

相關內容