Ich verwende gcsfuse
Google Compute Engine. Ich habe einen Ordner mit Cloud Storage Bucket gemountet, kann darin aber keine Datei erstellen:
touch t1
mit einem Fehler:
touch: cannot touch 't1': Input/output error
Die Lösung für das Problem besteht darin,Cloud-API-Zugriffsbereich: Speicher: Lesen/Schreiben
Wie ändere ich den Zugriffsbereich der Cloud-API auf der GCP Compute Engine, ohne die Instanz anzuhalten? Bitte geben Sie mir die Lösung für dieses Problem.
Dank im Voraus!
Antwort1
Es sieht so aus, als ob Sie nicht über ausreichende GCS-Berechtigungen verfügen. Schauen Sie sich dieDokumentationfür gcsfuse
. Wenn Sie ein Dienstkonto auf einer GCE-VM verwenden, stellen Sie sicher, dass Sie die VM mit dem storage-full
Zugriffsbereich einrichten.
Sie können versuchen, das Problem folgendermaßen zu beheben:
- Erstellen Sie ein Servicekonto (weitere InformationenHier)
- Erstellen Sie einen Schlüssel für das Dienstkonto und laden Sie die JSON-Datei herunter
- Weisen Sie dem Dienstkonto eine entsprechende Rolle zu
- Erteilen Sie dem Dienstkonto die entsprechenden Berechtigungen für den Bucket.
- Laden Sie die JSON-Anmeldeinformationen für das Dienstkonto auf die VM hoch.
gcsfuse
Definieren Sie eine Umgebungsvariable, die beim Aufruf über die Befehlszeile den Pfad zu den Anmeldeinformationen des Dienstkontos enthält :GOOGLE_APPLICATION_CREDENTIALS = /root/credentials/service_credential_file.json gcsfuse bucket_name /my/mount/point
Verwenden Sie die
key_file
Option, um das gleiche Ziel zu erreichen,fstab
wie es dokumentiert istHier.
Darüber hinaus müssen Sie die Umgebungsvariable oder key_file
Option verwenden, auch wenn Sie das Dienstkonto auf der VM wie folgt konfiguriert haben:
gcloud auth activate-service-account --key-file /root/credentials/service_credential_file.json
Bitte aktualisieren Sie Ihre Frage mit Ihren Schritten, Befehlen und vollständigen Ausgaben, wenn weiterhin ein Problem besteht.