Ich dachte, es wäre ziemlich einfach, dies zu tun, aber ich kann es nicht zum Laufen bringen:
Ich versuche, Dateien von einem Server (GCE) in einen Google Cloud Storage Bucket zu übertragen. Um zu vermeiden, dass dem gsutil
Befehl auf dem Server zu viele Rechte erteilt werden, habe ich im Abschnitt "Anmeldeinformationen" meines Google-Projekts ein "Dienstkonto" erstellt.
Zum Bucket habe gs://mybucket
ich die E-Mail-Adresse dieses Dienstkontos mit EIGENTÜMER-Berechtigungen als BENUTZER zum Bucket hinzugefügt.
Auf dem Server habe ich das Dienstkonto folgendermaßen aktiviert:
$gcloud auth activate-service-account --key-file <path-to-keyfile> myservice
$gcloud auth list
Credentialed accounts:
- 1234567890@project.gserviceaccount.com
- myservice (active)
To set the active account, run:
$ gcloud config set account <account>
Bisher scheint also alles in Ordnung zu sein. Der Zugriff auf den Bucket schlägt jedoch fehl:
$gsutil cp tempfile gs://mybucket
CommandException: Error retrieving destination bucket gs://mybucket/: [('PEM routines', 'PEM_read_bio', 'no start line')]
$gsutil cp tempfile gs://mybucket/tempfile
Failure: [('PEM routines', 'PEM_read_bio', 'no start line')].
Natürlich habe ich überprüft, ob die ACLs des Buckets das Dienstkonto als EIGENTÜMER anzeigen. Ich habe dies auch auf einem anderen Computer mit einem anderen Betriebssystem versucht. Gleiches Ergebnis. Unnötig zu erwähnen, dass ich aus den Fehlermeldungen selbst keinen Sinn machen kann. Ich würde mich über Vorschläge freuen. Detailliertes Fehlerprotokoll in dieser Übersicht .
Aktualisieren:
Verwenden Sie nach dem Entfernen ~/.config
, wo gcloud
die Berechtigungsdaten gespeichert sind, den veralteten Befehl
gsutil config -e
wird ~/.boto
mit dem Dienstkonto wie beabsichtigt generiert . Der spätere Zugriff auf gs://mybucket
funktioniert .
Ich bin mir jedoch nicht sicher, ob dies der Weg ist, dem ich folgen soll. Wie bringe ich das zum Laufen gcloud auth
?