无法连接到本地 Google Cloud Datastore 模拟器

Posted

技术标签:

【中文标题】无法连接到本地 Google Cloud Datastore 模拟器【英文标题】:Can not connect to local Google Cloud Datastore emulator 【发布时间】:2020-11-28 18:03:46 【问题描述】:

我有一个适用于 GAE App Engine 标准环境的新 Python 3 / Flask 应用程序。它在本地测试环境中以及在部署到云时也可以正常工作。只要我不使用 Datastore。

我第一次尝试本地测试失败了

datastore_client = datastore.Client()

在启动时将以下内容写入终端控制台时

dev_server.py:

"google.auth.exceptions.DefaultCredentialsError: Could not automatically determine credentials. Please set GOOGLE_APPLICATION_CREDENTIALS or explicitly create credentials and re-run the application."

数据存储模拟器在 localhost:8081 上本地运行。

这些设置:

export DATASTORE_DATASET=xxxxxx
export DATASTORE_EMULATOR_HOST=localhost:8081 
export DATASTORE_EMULATOR_HOST_PATH=localhost:8081/datastore 
export DATASTORE_HOST=http://localhost:8081 
export DATASTORE_PROJECT_ID=xxxxxx

我错过了什么?本地(我的笔记本电脑)数据存储模拟器需要什么样的凭据?如何设置?

【问题讨论】:

【参考方案1】:

您需要设置GOOGLE_APPLICATION_CREDENTIALS per:

https://cloud.google.com/docs/authentication/getting-started

【讨论】:

谢谢。它仍然失败。我已按照您提供的链接中的说明创建了服务帐户。它是一个 json 文件,已下载。我已经设置了这个:export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/xxxxxx-b64933298f09.json"。该应用程序仍然失败并显示以下消息:google.auth.exceptions.DefaultCredentialsError:无法自动确定凭据。请设置 GOOGLE_APPLICATION_CREDENTIALS 或显式创建凭据并重新运行应用程序。知道我做错了什么吗? 另外,当我部署到云端时,datastore_client = datastore.Client() 不会失败,因此问题似乎只适用于我的本地环境。我也尝试将 json 文件放到各个地方,并在 GOOGLE_APPLICATION_CREDENTIALS 中应用正确的路径,仍然是同样的问题。数据存储模拟器从单独的终端窗口启动。 /home/user/Downloads/my-key.json 只是文档中的一个示例路径。你有这样的目录吗?将 json 文件放在项目的根目录下,并将路径更改为那里。 嗨,它现在在那里。但是,与此同时,我更接近解决方案。出于某种原因,我的环境变量(例如 GOOGLE_APPLICATION_CREDENTIALS、DATASTORE_EMULATOR_HOST)在应用程序中不可见。我已经在终端窗口中设置了这些,并且可以通过 printenv 正确检索它们。但是当我通过“dev_appserver.py app.yaml”启动应用程序并在其中执行打印(os.getenv(“GOOGLE_APPLICATION_CREDENTIALS”))时,它会在控制台上打印“None”。为什么会这样? 感谢您花时间帮助初学者。

以上是关于无法连接到本地 Google Cloud Datastore 模拟器的主要内容,如果未能解决你的问题,请参考以下文章

如何在本地使用 java 连接到带有 spark 的 Google 大查询?

在 GKE 中,typeorm 无法连接到 Google Cloud SQL 代理

Spring Boot 应用在部署到 Google App Engine 时无法连接到 Google Cloud SQL (PostgreSQL)

Flask SQLalchemy 无法使用 Unix 套接字连接到 Google Cloud Postgresql 数据库

为什么无法通过Google Cloud Platform上的Chrome RDP连接到Windows VM?

如何将 Google Cloud Run Container 连接到 Open***?