无法连接到本地 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 数据库