我gcsfuse
在 Google Compute Engine 內部使用。我安裝了一個帶有雲端儲存桶的資料夾,但是無法在其中建立任何檔案:
touch t1
有錯誤:
touch: cannot touch 't1': Input/output error
問題的解決方案是給出雲端API存取範圍:儲存:讀/寫
如何在不停止實例的情況下更改 GCP 運算引擎上的雲端 API 存取範圍?請向我提供此問題的解決方案。
先致謝!
答案1
您的 GCS 權限似乎不足。看看文件為了gcsfuse
。如果您在 GCE VM 上使用服務帳戶,請確保設定具有storage-full
存取範圍的 VM。
您可以嘗試用以下方法修復:
- 建立一個服務帳戶(更多信息這裡)
- 為服務帳戶建立金鑰,然後下載 .json 文件
- 授予服務帳戶適當的角色
- 授予儲存桶上的服務帳戶適當的權限
- 將服務帳戶的 .json 憑證上傳到 VM
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
如果仍有問題,請使用步驟、命令和完整輸出更新您的問題。