【问题标题】:How to bypass the Local Development Server for Google App Engine?如何绕过 Google App Engine 的本地开发服务器?
【发布时间】:2017-04-29 20:42:06
【问题描述】:
Google App Engine 的本地开发服务器非常适合进行测试 - 但我们也希望针对我们在 Google 云中的数据库进行测试。
我们尝试设置 --host option for the Local Development Server 以希望我们可以绕过 localhost - 但它会抛出一个错误,它无法在 Google 的 x.appspot.com 上绑定我们的服务(即 x 是我们的项目。)
如何绕过本地开发服务器,让我们的 Python App Engine 应用连接到云端的 Google Cloud SQL 和 Cloud DataStorein,而不是本地版本?
【问题讨论】:
标签:
python
google-app-engine
google-cloud-datastore
google-cloud-sql
【解决方案1】:
云数据存储
现在有一个客户端google-cloud-python 允许您直接访问数据存储区,前提是该客户端具有正确的凭据。
最简单的尝试方法是在 Cloud Shell 中 -
$ sudo pip install --upgrade google-cloud
$ python
>>> from google.cloud import datastore
>>> client = datastore.Client(project='YOUR-PROJECT-ID')
>>> query = client.query(kind='YOUR-ENTITY')
>>> for result in query.fetch():
>>> print(result)
您可以在文档中找到有关身份验证的更多信息。
云 SQL
您可以通过以下方式连接到 Cloud SQL 实例:
- IP 地址(带和不带 SSL)
- Cloud SQL 代理(二进制或 Docker 映像)
- MySQL 套接字库(仅限 Java)
- Go 代理库(仅限 Go)
- Cloud Shell(使用临时 IP 白名单)
我建议通过Cloud SQL Proxy 连接。
替代测试
我相信还值得问问自己您要测试什么以及是否可以避免直接连接到 prod 数据库。我建议设置一个暂存环境,而不是在其中您可以通过脚本定期导入产品数据的子集,正确匿名敏感用户数据并针对该环境运行 E2E 测试,以避免对您的生产产生任何潜在的负面影响系统。