Ich bin über SSH bei einer GCE-Instanz angemeldet. Von dort möchte ich mit Hilfe eines Dienstkontos auf den Speicher zugreifen:
GCE> gcloud auth list
Credentialed accounts:
- [email protected] (active)
Ich habe zuerst sichergestellt, dass dieses Dienstkonto in den Berechtigungen des Projekts, in dem ich arbeite, als "Kann bearbeiten" gekennzeichnet ist. Außerdem habe ich ihm die Schreib-ACL für den Bucket gegeben, in den er eine Datei kopieren soll:
local> gsutil acl ch -u [email protected]:W gs://mybucket
Aber dann schlägt der folgende Befehl fehl:
GCE> gsutil cp test.txt gs://mybucket/logs
(Ich habe auch sichergestellt, dass "logs" unter "mybucket" erstellt wird).
Die Fehlermeldung, die ich erhalte, lautet:
Copying file://test.txt [Content-Type=text/plain]...
AccessDeniedException: 403 Insufficient Permission 0 B
Was vermisse ich?
google-cloud-storage
Christophe
quelle
quelle
Antworten:
Eine andere Sache, nach der Sie suchen müssen, ist sicherzustellen, dass Sie beim Erstellen der GCE-VM die entsprechenden Bereiche eingerichtet haben. Selbst wenn an eine VM ein Dienstkonto angehängt ist, müssen ihr Devstorage-Bereiche zugewiesen werden, um auf GCS zugreifen zu können.
Zum Beispiel, wenn Sie Ihre VM mit erstellt haben
devstorage.read_only
Gültigkeitsbereich erstellt haben, schlägt der Versuch, in einen Bucket zu schreiben, fehl, selbst wenn Ihr Dienstkonto über die Berechtigung zum Schreiben in den Bucket verfügt. Du würdestdevstorage.full_control
oder brauchendevstorage.read_write
.Siehe den Abschnitt über Informationen finden Vorbereiten einer Instanz für die Verwendung von Dienstkonten .
Hinweis: Das Standard-Rechendienstdienstkonto hat nur sehr begrenzte Bereiche (einschließlich schreibgeschützter GCS). Dies erfolgt, weil das Standarddienstkonto über IAM-Berechtigungen für den Projekteditor verfügt. Wenn Sie ein Benutzerservicekonto verwenden, ist dies normalerweise kein Problem, da vom Benutzer erstellte Dienstkonten standardmäßig den gesamten Bereichszugriff erhalten.
Nach dem Hinzufügen der erforderlichen Bereiche zur VM werden
gsutil
möglicherweise weiterhin zwischengespeicherte Anmeldeinformationen verwendet, die nicht über die neuen Bereiche verfügen. Löschen Sie,~/.gsutil
bevor Sie die Befehle gsutil erneut versuchen. (Vielen Dank an @mndrix für den Hinweis in den Kommentaren.)quelle
gsutil
möglicherweise weiterhin zwischengespeicherte Anmeldeinformationen verwendet, die nicht über die neuen Bereiche verfügen. Löschen Sie ~ / .gsutil, bevor Sie diegsutil
Befehle erneut versuchen .Sie müssen sich mit einem Konto anmelden, das über die für dieses Projekt erforderlichen Berechtigungen verfügt:
quelle
gcloud auth revoke <email-account>
wenn Sie fertig sind.gsutil config -b
Surfen Sie dann zu der angegebenen URL. [KLICKEN Zulassen]
Kopieren Sie dann den Bestätigungscode und fügen Sie ihn in das Terminal ein.
quelle
gsutil
ausssh
.-b
. Dadurch wird kein Browser geöffnet, sondern lediglich eine URL ausgespuckt, die außerhalb der Shell geöffnet werden kann.Ich habe eine Antwort auf diese Frage geschrieben, da ich keine Kommentare posten kann:
Dieser Fehler kann auch auftreten, wenn Sie den
gsutil
Befehlsudo
in einigen Fällen mit einem Präfix ausführen.quelle
quelle
gcloud auth login
auf die VM-Instanz zu: und befolgen Sie die Schritte.Ref: https://groups.google.com/d/msg/gce-discussion/0L6sLRjX8kg/kP47FklzBgAJ
quelle
Also habe ich eine Reihe von Dingen ausprobiert, um vom GCS-Bucket auf meine VM zu kopieren. Hoffe dieser Beitrag hilft jemandem.
Über SSHed-Verbindung:
und folgendes diesem Skript:
Habe diesen Fehler bekommen:
Was behoben wurde, war der folgende Abschnitt "Aktivieren der API" in diesem Link - https://cloud.google.com/storage/docs/json_api/
Sobald ich die API aktiviert habe, habe ich mich im SSHed-Fenster über authentifiziert
Nach dem Authentifizierungsvorgang konnte ich endlich von Google Storage Bucket auf meine VM herunterladen.
PS
Ich habe darauf geachtet:
Gehen Sie zu meinem Bucket, wechseln Sie zur Registerkarte Berechtigungen, fügen Sie die gewünschten Dienstkonten hinzu und legen Sie die Berechtigung / Rolle für den Speicheradministrator fest.
3.Stellen Sie sicher, dass meine VM über die richtigen Cloud-API-Zugriffsbereiche verfügt:
quelle
Aus den Dokumenten: https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances#changeserviceaccountandscopes
Sie müssen zuerst die Instanz stoppen -> zur Bearbeitungsseite gehen -> zu "Cloud-API-Zugriffsbereiche" gehen und "Speicher-Vollzugriff oder Lesen / Schreiben oder was auch immer Sie benötigen" auswählen.
quelle