一尘不染

通过Cloud Datastore API连接到开发中的AppEngine数据存储

go

我们目前正在运行组合的AppEngine /
GCE应用程序,到目前为止,我们所有的数据存储访问都保留在AppEngine方面。现在,我们正在探索还允许我们的GCE实例对(共享)数据存储区进行一些查询。首先,我试图弄清楚如何在本地运行事物。到目前为止,我们拥有:

  • Go devappserver运行
  • Go独立二进制文件,它希望向devappserver数据存储区发出查询。
  • 我们安装了(“获取”)google-api-go-client / datastore / v1beta2,以便我们可以使用API​​而不是直接发出HTTP调用。但是,如果此API库在开发中无法使用,我们绝对愿意直接发出HTTP调用。
  • 我们已经设置了服务帐户(我们已经从GCE访问GCS),但是我怀疑这与在本地运行是否相关…

我看过一些文档,但他们(a)仅谈论Python和Java,并且(b)讨论连接到(独立的)开发数据存储区服务器,而不是嵌入到AppEngine的devappserver中的数据存储区(如果两者甚至不同?)。


阅读 246

收藏
2020-07-02

共1个答案

一尘不染

当前,由于多种原因,这在开发环境中是不可能的。Google Cloud Datastore工具( gcd.sh
)使用Java开发服务器。但是,在开发go for App
Engine时,您使用的是python开发服务器,该服务器具有不同的基础存储。在github页面上有一个跟踪此问题的错误。

您仍然可以在go中开发Google Cloud
Datastore应用程序,但是当前的go客户端库中存在许多错误。不幸的是,开发服务器当前不支持go库使用的JSON
API(请参阅页面顶部注释)。

更新
:我想确保proppy的评论被视为答案的一部分。他的建议确实提供了使用API​​协议版本的方法,该方法可能比上面的go客户端库更稳定。它还可以让您使用该gcd.sh工具在开发服务器中对此进行测试。不过,您将必须自己设计HTTP请求,并且您将无法在应用程序和开发中的Cloud
Datastore之间共享数据存储中的数据。但是,这绝对是一个很好的解决方法,可以让您使用Cloud DatastoreAPI,随着它的发展,它比其他解决方法更容易使用。从proppy:

请注意,您仍然可以将Cloud Datastore Protobuf HTTP
API与Go结合使用。protobuf定义在GitHub上可用,您可以使用Go protobuf编译器插件将其编译为Go代码,然后将POST
HTTP请求发送到 /datastore/{version}/datasets/{datasetId}/{method}

2020-07-02