将 Google Cloud Endpoint 连接到 Cloud SQL 时BAD_GATEWAY



我正在尝试从GCP端点连接到不同项目中的Cloud SQL(PostgreSQL(数据库。我的端点后端是使用 Python 的灵活环境中的应用引擎。

端点 API 适用于非数据库请求和本地运行时的数据库请求。但是,当需要数据库访问时,部署的 API 会产生以下结果:

{
"code": 13,
"message": "BAD_GATEWAY",
"details": [
{
"@type": "type.googleapis.com/google.rpc.DebugInfo",
"stackEntries": [],
"detail": "application"
}
]
}

我点击了此链接 (https://cloud.google.com/endpoints/docs/openapi/get-started-app-engine( 来创建端点项目,并点击了此链接 (https://cloud.google.com/appengine/docs/flexible/python/using-cloud-sql-postgres( 从其他项目链接到 Cloud SQL。

一个区别是我不使用 SQLALCHEMY_DATABASE_URI env 变量进行连接,而是从配置文件中获取连接字符串以与 psycopg2 SQL 字符串一起使用。此代码适用于同一项目中的 CE 服务器。

还要仔细检查具有PostgreSQL数据库的项目是否被授予对端点项目的服务帐户的Cloud SQL Editor访问权限。而且,如果应用引擎与云 SQL 数据库位于同一项目中(不是来自终结点项目(,则数据库连接字符串工作正常。

不知道还能尝试什么。如何获取有关BAD_GATEWAY的更多详细信息?这就是端点日志文件中的所有内容,云 SQL 日志文件中没有任何内容。

非常感谢 -- 担

这是我的应用程序.yaml:

runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:app
runtime_config:
python_version: 3
env_variables:
SQLALCHEMY_DATABASE_URI: >-
postgresql+psycopg2://postgres:password@/postgres?host=/cloudsql/cloudsql-project-id:us-east1:instance-id
beta_settings:
cloud_sql_instances: cloudsql-project-id:us-east1:instance-id
endpoints_api_service:
name: api-project-id.appspot.com
rollout_strategy: managed

和要求.txt:

Flask==0.12.2
Flask-SQLAlchemy==2.3.2
flask-cors==3.0.3
gunicorn==19.7.1
six==1.11.0
pyyaml==3.12
requests==2.18.4
google-auth==1.4.1
google-auth-oauthlib==0.2.0
psycopg2==2.7.4

(这应该是一个评论,但格式确实会恶化阅读,我将在这里更新(

我正在尝试重现您的错误,并提出了一些问题:

  1. 您如何处理教程中的环境变量?您是否对它们进行了硬编码,或者正在使用环境变量?它们使用Cloud Shell重置(如果您使用的是Cloud Shell(。
  2. 这对我来说不清楚:您是否在 CloudSQL 中看到任何类型的日志文件(没有错误(或者您甚至看不到日志?
  3. CloudSQL,app.yaml和需求.txt配置是相关的。您能提供更多信息吗?如果您更新帖子,请小心,不要发布用户名、密码或其他敏感信息。
  4. 两个项目是否位于同一区域/区域?有时这是必需的,但我在文档中没有看到任何指向这一点的内容。

我的直觉指出了一个凭据问题,但如果您在帖子中添加更多信息以更好地了解问题的来源,那将很有用。

最新更新