使用 gcloud 连接到 Google Datastore

Posted

技术标签:

【中文标题】使用 gcloud 连接到 Google Datastore【英文标题】:Connecting to Google Datastore using gcloud 【发布时间】:2015-05-24 23:01:16 【问题描述】:

我正在尝试连接到我的 Google Datastore 实例,但找不到任何有关如何初始化连接的示例代码!

Gcloud 的主要documentation 立即从如何分配实体或查询开始,但跳过了关键的连接位。这 演示部分似乎特定于演示,因为它使用了相当混乱的测试环境变量。

最重要的是,我对需要定义哪些环境变量以及是否可以从 python 程序中定义服务电子邮件和密钥路径感兴趣。

如果有人可以提供如何将某些内容提交到数据存储实例的示例代码,我们将不胜感激。

谢谢!

【问题讨论】:

【参考方案1】:

看了一圈,终于找到需要定义的环境变量了。

从 Python 中连接到您的谷歌数据存储:

import os

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = <path to private key>
os.environ['GCLOUD_DATASET_ID'] = <dataset_id, also known as project id>

# Fetching queries should work now
query = datastore.Query(kind=<kind>, namespace=<namespace>)
for result in query.fetch():
    print result

Google 假设您将 App Engine 与 Datastore 一起使用,这就是为什么如果您首先介绍 Google Cloud 是它的 Datastore 服务,找到这些变量会比较棘手。

【讨论】:

【参考方案2】:

如果您不使用 Appengine 或计算引擎,则在开发人员控制台凭据部分创建服务帐户并下载 JSON 密钥,然后让 GOOGLE_APPLICATION_CREDENTIALS 环境变量指向它是一种方法。

您通常不会像以前那样在代码中这样做,因为它是特定于给定环境的。

如果您使用的是 Compute Engine,则只需创建具有 Datastore 范围的实例,就不需要该步骤:

gcloud compute instances create $INSTANCE_NAME --scopes datastore userinfo-email

另外,另一种指定项目 id 的方法如下:

from gcloud import datastore
datastore.set_defaults(dataset_id='project-id')

【讨论】:

按照我的示例,它并没有真正硬编码,它是从特定于我计划在其中运行代码的每个环境的设置文件中导入的。

以上是关于使用 gcloud 连接到 Google Datastore的主要内容,如果未能解决你的问题,请参考以下文章

异常:503 将数据推送到 Google Pub/Sub 时连接到所有地址失败

将 gcloud VM 上运行的 Spring Boot 连接到云 SQL 实例

将 Google CloudSQL Postgres 数据库连接到 Data Studio

Google Data Studio 目前可以连接到 AWS RDS 或 Redshift 吗?

错误:(gcloud.sql.connect)HTTPError 400:传入请求包含无效数据

Google Cloud DataCatalog