Itu muncul dari Insufficient Permission
kesalahan dalam hasil debug Anda bahwa gcsfuse tidak memiliki izin yang memadai untuk keranjang Anda. Mungkin memiliki akses hanya baca.
Pastikan untuk membaca dokumentasi kredensial untuk gcsfuse. Khususnya, jika Anda menggunakan akun layanan di VM GCE, pastikan untuk menyiapkan VM dengan storage-full
cakupan akses.
Masalah Anda memang berasal dari izin yang tidak memadai, tetapi Anda tidak perlu menghancurkan dan membuat ulang VM dengan cakupan berbeda untuk mengatasi masalah ini. Berikut adalah pendekatan lain yang lebih cocok untuk sistem produksi:
- Buat akun layanan
- Buat kunci untuk akun layanan, dan unduh file JSON
- Berikan peran yang sesuai ke akun layanan
- Berikan izin yang sesuai ke akun layanan di bucket
- Unggah kredensial JSON untuk akun layanan ke VM
Terakhir, tentukan variabel lingkungan yang berisi jalur ke kredensial akun layanan saat memanggil gcsfuse dari baris perintah:
GOOGLE_APPLICATION_CREDENTIALS=/root/credentials/service_credential_file.json gcsfuse bucket_name /my/mount/point
Gunakan key_file
opsi untuk menyelesaikan hal yang sama di fstab
. Kedua opsi ini didokumentasikan dalam dokumentasi kredensial gcsfuse. (EDIT:opsi ini didokumentasikan, tetapi tidak berfungsi untuk saya.)
Menariknya, Anda perlu menggunakan variabel lingkungan atau key_file
bahkan jika Anda telah mengonfigurasi akun layanan di VM menggunakan:
gcloud auth activate-service-account --key-file /root/credentials/service_credential_file.json
Untuk beberapa alasan, gcsfuse mengabaikan akun kredensial aktif.
Menggunakan storage-full
ruang lingkup saat membuat VM memiliki implikasi keamanan dan stabilitas, karena memungkinkan VM tersebut memiliki akses penuh ke setiap keranjang milik proyek yang sama. Haruskah server penyimpanan file Anda benar-benar dapat menimpa log di bucket logging, atau membaca cadangan database di bucket lain?