OAuth:从Google App Engine中启动Google Compute实例

spe*_*ane 8 google-app-engine oauth-2.0 google-compute-engine

我有一个运行我网站大部分内容的Google App Engine网络应用.但是,对于某些功能,我需要一台linux机器.我希望我的Google App Engine应用能够在某些事件中自动启动Google Compute Instance.

我了解您可以使用Compute Engine REST API添加Google Compute实例.但是,要访问Google Compute REST API,您需要使用OAuth2身份验证过程获取访问令牌.

如何以编程方式从Google App Engine中获取访问令牌?

似乎所有身份验证方法都需要显示一个窗口,因此您可以输入用户名和密码,这在Google App Engine中是不切实际的.

E. *_*son 3

您应该能够使用与您的项目关联的服务帐户来向 Compute Engine API 进行身份验证并启动虚拟机。

有关服务帐户的文档表明以下 python 代码应获取服务帐户令牌。

import httplib2

import discovery
from oauth2client.appengine import AppAssertionCredentials
...
credentials = AppAssertionCredentials(
    scope='https://www.googleapis.com/auth/compute')
auth_http = credentials.authorize(httplib2.Http())
compute_service = discovery.build('compute', 'v1beta15', http=auth_http)
Run Code Online (Sandbox Code Playgroud)

我原以为今年的 Google I/O 演示将可用,他们在其中构建了一个视频共享网站,但我在 GitHub 上还没有看到它。有许多使用 AppEngine 来控制 GCE 的演示,但大多数似乎都使用用户的项目和凭据,而不是应用程序自己的凭据。

显然,您可能不想在直接用户输入的情况下启动虚拟机,除非您有非常大的预算或某种形式的速率限制,但是当您“时时启动虚拟机”非常有帮助。我们有很多计算要做。(转码等)