Objevuje se z Insufficient Permission
chyby ve vašem výstupu ladění, že gcsfuse nemá dostatečná oprávnění k vašemu bucketu. Pravděpodobně má přístup pouze pro čtení.
Nezapomeňte si přečíst dokumentaci k přihlašovacím údajům pro gcsfuse. Zejména pokud používáte servisní účet na virtuálním počítači GCE, nastavte virtuální počítač pomocí storage-full
rozsah přístupu.
Váš problém pramení z nedostatečných oprávnění, ale vy ne k vyřešení tohoto problému je potřeba zničit a znovu vytvořit virtuální počítač s jiným rozsahem. Zde je další přístup, který je vhodnější pro produkční systémy:
- Vytvořte si servisní účet
- Vytvořte klíč pro servisní účet a stáhněte si soubor JSON
- Přidělte servisnímu účtu příslušnou roli
- Udělte příslušná oprávnění servisnímu účtu v segmentu
- Nahrajte přihlašovací údaje JSON pro účet služby do virtuálního počítače
Nakonec definujte proměnnou prostředí, která obsahuje cestu k přihlašovacím údajům servisního účtu při volání gcsfuse z příkazového řádku:
GOOGLE_APPLICATION_CREDENTIALS=/root/credentials/service_credential_file.json gcsfuse bucket_name /my/mount/point
Použijte key_file
možnost provést totéž v fstab
. Obě tyto možnosti jsou zdokumentovány v dokumentaci pověření gcsfuse. (EDIT:tato možnost je zdokumentována, ale pro mě nebude fungovat.)
Zajímavé je, že musíte použít proměnnou prostředí nebo key_file
i když jste nakonfigurovali účet služby na virtuálním počítači pomocí:
gcloud auth activate-service-account --key-file /root/credentials/service_credential_file.json
Z nějakého důvodu gcsfuse ignoruje aktivní pověřený účet.
Pomocí storage-full
rozsah při vytváření virtuálního počítače má dopady na bezpečnost a stabilitu, protože virtuálnímu počítači umožňuje mít plný přístup ke každému segmentu, který patří ke stejnému projektu. Měl by váš server úložiště souborů skutečně přepisovat protokoly v logovacím segmentu nebo číst zálohy databáze v jiném segmentu?