OAuth: Starten einer Google Compute-Instanz über Google App Engine

8

Ich habe eine Google App Engine-Webanwendung, auf der der Großteil meiner Website ausgeführt wird. Für bestimmte Funktionen benötige ich jedoch einen Linux-Rechner. Ich möchte, dass meine Google App Engine-App bei bestimmten Ereignissen automatisch eine Google Compute-Instanz hochlädt.

Ich verstehe, dass Sie Google Compute-Instanzen mithilfe der Compute Engine-REST-API hinzufügen können. Um auf die Google Compute-REST-API zuzugreifen, müssen Sie jedoch mithilfe des OAuth2-Authentifizierungsprozesses ein Zugriffstoken abrufen.

Wie kann ich programmgesteuert ein Zugriffstoken von Google App Engine erhalten?

Es scheint, dass für alle Authentifizierungsmethoden ein Fenster angezeigt werden muss, damit Sie Ihren Nutzernamen und Ihr Passwort eingeben können, was in Google App Engine nicht praktikabel ist.

    
speedplane 30.06.2013, 18:33
quelle

2 Antworten

3

Sie sollten das mit Ihrem Projekt verknüpfte Dienstkonto verwenden können, um sich bei der Compute Engine-API zu authentifizieren und VMs zu starten.

Dokumentation zu Service-Accounts deutet darauf hin, dass der folgende Python-Code eine Datei abrufen sollte Dienstkonto-Token.

%Vor%

Ich hatte gedacht, dass die Google I / O-Demo von diesem Jahr, in der sie eine Video-Sharing-Site erstellt haben, verfügbar sein wird, aber ich sehe sie noch nicht auf GitHub. Es gibt eine Reihe von Demos , die AppEngine verwenden, um GCE zu kontrollieren, aber die meisten von ihnen scheinen zu verwenden das Projekt und die Anmeldeinformationen des Benutzers, eher die eigenen Anmeldeinformationen der App.

Offensichtlich möchten Sie eine virtuelle Maschine auf direktem Wege nicht hochfahren, es sei denn, Sie haben ein sehr großes Budget oder eine Form der Begrenzung der Rate, aber es ist sehr hilfreich, eine VM hin und wieder hochzufahren wenn man viel rechnen muss. (Transkodierung, etc.)

    
E. Anderson 01.07.2013, 00:15
quelle
4

Im Folgenden finden Sie ein vollständiges Beispiel für die Verwendung von Dienstkonten und App Engine-Cron-Aufgaben zum Stoppen von Instanzen, nachdem sie eine Weile ausgeführt wurden: (Gegenteil von Startinstanzen, aber der Autorisierungscode ist der gleiche)

Ссылка

AppAssertionCredentials verarbeitet das Zugriffstoken mit diesem Code :

%Vor%     
Brian Dorsey 01.07.2013 17:21
quelle