google-app-engine - flexible - google app engine memory limit
¿Cómo accedo a las entidades de AppEngine DataStore desde mi máquina virtual de Compute Engine? (4)
Además de las opciones que @David explicó, también puede examinar VM administradas : son un cruce entre Compute Engine y App Engine, básicamente una instancia administrada de Compute Engine que tiene acceso a los servicios de App Engine.
Mi aplicación se está ejecutando en App Engine, pero me gustaría acceder a sus entidades NDB DataStore desde mi máquina virtual de Compute Engine para hacer algún procesamiento y volver a escribir los resultados en App Engine DataStore. ¿Cómo puedo hacer eso?
Además, ¿Google Cloud DataStore y App Engine DataStore son lo mismo? https://developers.google.com/datastore/ https://developers.google.com/appengine/docs/python/ndb/
Google Cloud Datastore es una especie de versión independiente del almacén de datos de App Engine.
De vuelta a su problema, tiene dos opciones:
Escriba un servicio web para exponer sus entidades desde la aplicación App Engine a las máquinas virtuales de Compute Engine. Una opción es Cloud Endpoints . Cloud Endpoints usa autenticación OAuth2 y las máquinas virtuales de Compute Engine se envían con cuentas de servicio OAuth2 que puede usar para autenticarse en el servicio .
Use la API remota de App Engine para acceder al Almacén de datos. La API remota proporciona acceso al Almacén de datos como si estuvieras en una instancia de App Engine. Pero, de forma predeterminada, la API requiere que ingrese la contraseña de un amdin de App Engine, por lo que es posible que tenga que almacenar su contraseña en las máquinas virtuales de Compute Engine, lo que no es seguro.
La solución de David requiere que use el tiempo de la instancia de App Engine para realizar solicitudes, pero puede eludirlo y realizar solicitudes directamente al almacén de datos desde la instancia de Compute Engine. Hay un buen tutorial sobre cómo hacer esto. Pero no es tan bonita como ndb.
>>> import googledatastore as datastore
>>> datastore.set_options(dataset=''project-id'')
>>> req = datastore.BeginTransactionRequest()
>>> datastore.begin_transaction(req)
<datastore.datastore_v1_pb2.BeginTransactionResponse object at ...>
La forma oficialmente recomendada es utilizar las bibliotecas del cliente del almacén de datos; consulte https://cloud.google.com/datastore/docs/reference/libraries Necesita crear una cuenta de servicio, o usar la cuenta de servicio de motor de cómputo estándar, otorgar permiso a todas las API, o al almacén de datos a esa cuenta de servicio, y crea la instancia del motor de cómputo para ser parte de esa cuenta de servicio. Mira aquí para más información. Entonces puedes hacer algo como:
from google.auth import compute_engine
from google.cloud import datastore
datastore_client = datastore.Client(project=''yourproject'',
credentials=compute_engine.Credentials())
q = datastore_client.query(kind=''YourEntity'')
q.add_filter(''field_name'', ''='', ''HelloThere'')
print list(q.fetch(1))