Google Cloud Datastore是在应用引擎和计算引擎之间共享信息的绝佳方式。 This instruction显示了如何使用来自计算引擎的Google云数据存储区,但似乎应用引擎和计算引擎都必须位于相同的项目ID中。
我的应用引擎和计算引擎中的数据存储区具有不同的项目ID。
这就是我所做的。 在第65行的googledatastore / helper.py中,添加了1行
try:
raise client.AccessTokenRefreshError # <== added
credentials = gce.AppAssertionCredentials(connection.SCOPE)
http = httplib2.Http()
credentials.authorize(http)
credentials.refresh(http)
logging.info('connect using compute credentials')
return credentials
except (client.AccessTokenRefreshError, httplib2.HttpLib2Error):
if (os.getenv('DATASTORE_SERVICE_ACCOUNT')
and os.getenv('DATASTORE_PRIVATE_KEY_FILE')):
with open(os.getenv('DATASTORE_PRIVATE_KEY_FILE'), 'rb') as f:
key = f.read()
credentials = client.SignedJwtAssertionCredentials(
os.getenv('DATASTORE_SERVICE_ACCOUNT'), key, connection.SCOPE)
logging.info('connect using DatastoreSignedJwtCredentials')
return credentials
然后忽略计算引擎凭据。之后,只需遵循“不是来自计算引擎”的说明。 嗯..它看起来不是最好的方式。
在另一个项目ID下使用来自计算引擎的数据存储区是否正确?
答案 0 :(得分:3)
我建议在同一个项目下整合Compute Engine和App Engine,但如果出于某些原因这是不可能的,您可以尝试以下方法:
它应该有希望与未修改的python客户端一起使用。