Google Cloud Datastore 是在应用引擎和计算引擎之间共享信息的好方法。该指令显示了如何从计算引擎使用谷歌云数据存储,但似乎应用引擎和计算引擎都必须在同一个项目 ID 中。
我在应用引擎和计算引擎中的数据存储具有不同的项目 ID。
这就是我所做的。在 googledatastore/helper.py 第 65 行附近,添加了 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 下使用来自计算引擎的数据存储是否正确?