2017-01-28 3 views
2

Ich habe versucht, eine App Engine Python-App zu schreiben und sie über ein Dienstkonto zu verwalten (weil ich von einem Computer aus arbeite, dem ich mein Google-Konto nicht vertraue Referenzen).Autorisierungsfehler beim Aktualisieren von App Engine cron mit Dienstkonto

Ich habe die App erfolgreich zur Bereitstellung neuer Codeversionen erhalten (Tipp: Sie müssen nicht nur dem Dienstkonto App Engine "Deployer" und "Service Admin" Berechtigungen in der IAM-Konsole geben, möglicherweise auch "Admin" - Ich gab schließlich alle drei), aber Sie müssen auch sicherstellen, dass es Schreibberechtigungen für die für die Bereitstellung und Bereitstellung verwendeten GCS-Buckets mit den Namen myapp.appspot.com und staging.myapp.appspot.com *) hat, aber ich kann kein neues cron.yaml bereitstellen. Wenn ich versuche:

$ gcloud app deploy cron.yaml 
You are about to update the following configurations: 
- myapp/cron (from [.../myapp/cron.yaml]) 
Do you want to continue (Y/n)? 

Updating config [cron]...failed.                      
ERROR: (gcloud.app.deploy) Server responded with code [403]: 
    Forbidden Unexpected HTTP status 403. 
    You do not have permission to modify this app (app_id=u'p~myapp'). 

Wenn ich gcloud app deploy mit --verbosity=debug laufen, kann ich sehen, dass er eine Anfrage an https://appengine.google.com/api/cron/update?app_id=myapp ist zu machen und die 403.

Ich habe versucht, geben Sie den Editor oder Besitzer Dienstkonto Projekt immer wieder Berechtigungen, das hat nicht funktioniert. (Obwohl, wenn das notwendig wäre, würde ich es als einen Fehler betrachten.)

*: Alle Instanzen meiner Projekt-ID wurden in dieser Frage durch myapp ersetzt.

+0

Kann es so einfach wie 'gcloud auth login' sein? – GAEfan

+0

Danke, aber nein: Ich kann mich anmelden und den Code der App mit dem Dienstkonto drücken; Es ist nur die Cron-Konfiguration, die nicht drückt. –

+0

Es scheint, dass Sie einen Fehler gefunden haben. Wir verwenden ein Legacy-Backend für die Bereitstellung von Konfigurationsdateien ([dos, dispatch, queue, indexes, cron] .yaml), das nicht immer gut mit Dienstkonten funktioniert. Wenn Sie einen Fehler im [SDK-Issue Tracker] (https://code.google.com/p/google-cloud-sdk/issues/list) melden, werden Sie über das Problem informiert. Wenn nicht, werde ich einen Fehler auf unserem privaten Tracker öffnen./Ein App Engine Googler – Betamos

Antwort

0

Peinlicherweise war dies ein Benutzerfehler, aber andere könnten dazu führen, also lohnt es sich, es aufzuschreiben.

In der Benutzeroberfläche für IAM der GCP-Konsole können Sie Rollen für ein Konto hinzufügen und entfernen, indem Sie mit einem Dropdown-Menü interagieren. Da dieses Menü viele Rollenkategorien enthält, ist es lang. Möglicherweise bemerken Sie nicht, dass unten im Menü eine Schaltfläche "Speichern" angezeigt wird. Wenn Sie dies nicht sehen, sehen Sie keinen Hinweis darauf, dass Sie Rollen hinzufügen und löschen, indem Sie auf Menüelemente klicken und sehen Diese Rollen werden hinzugefügt und aus der Liste der aktuell ausgewählten Rollen im oberen Bereich des Menüs gelöscht. Es wird nichts im Backend gespeichert.

Das Hinzufügen der Berechtigung "Owner" des Projekts ist ausreichend, um die erforderlichen Cron-Push-Rechte zu gewähren - wenn Sie es speichern!

+1

Ich sehe keinen, aber gibt es keinen engen Bereich zu verwenden als 'Project' ->' Owner'? – Dolph

Verwandte Themen