google-app-engine - 无法从应用引擎连接到 postgres cloudsql
问题描述
我正在使用Go
. 我在云控制台内的同一个项目中有一个云 sql 实例和应用程序引擎。
我的app.yaml
文件中有以下内容:
service: myservice
runtime: go
api_version: go1
env_variables:
#for deploying
#POSTGRES_CONNECTION: "user=postgres password=<redacted> dbname=my_database host=/cloudsql/myproject:us-west1:myserver"
#for testing locally via cloud proxy
POSTGRES_CONNECTION: "user=postgres password=<redacted> dbname=mydatabase sslmode=disable"
beta_settings:
cloud_sql_instances: myproject:us-west1:myserver
handlers:
# All URLs are handled by the Go application script
- url: /.*
script: _go_app
在代码中,我像这样打开连接:
datastoreName := os.Getenv("POSTGRES_CONNECTION")
db, err := sql.Open("postgres", datastoreName)
在我的本地机器上,我有这样的设置cloud_sql_proxy
:
./cloud_sql_proxy -instances=passio-nutrition-develop-bcb6:us-west1:nutrition-sqlite-source=tcp:5432
并且POSTGRES_CONNECTION
设置为本地测试,一切都运行良好。
但是,当我设置POSTGRES_CONNECTION
部署和运行gcloud app deploy
时,当我尝试命中端点时会收到一条错误消息:
{"Op":"dial","Net":"unix","Source":null,"Addr":{"Name":"/cloudsql/myproject:us-west1:myserver/.s.PGSQL.5432","Net":"unix"},"Err":{"Syscall":"socket","Err":1}}
我尝试了各种不同版本的POSTGRES_CONNECTION
,包括添加=tcp:5432
到 and 的末尾host
,cloud_sql_instances
但我无法使连接正常工作。
如果有人能给我一些建议,那就太好了
解决方案
确保您已启用 Cloud SQL Admin API,并且您的默认 App Engine 服务帐号具有正确的 IAM 权限(它需要具有Cloud SQL Connect
角色或更高权限)。
推荐阅读
- rabbitmq - RabbitMq 消费者直到它 ACK 或 NACK 前一条消息才收到另一条消息
- javascript - 如何将值插入到 fetch api 中的全局变量然后成功
- java - 将 Spring Batch Tasklet 失败消息传递给报告步骤。
- sparql - 在 Jena 中选择 FROM 子句不返回任何结果
- css - CSS 计数器输出不匹配
- python - 如果我键盘中断一个正在运行的 Python 脚本,有没有办法从它停止的地方重新开始?(视窗)
- javascript - 谷歌分析报告 Reactjs
- php - Faker 污染 VRT 如何使用相同的随机数据运行 VRT 测试,因此找不到视觉差异
- r - 在附加到“R” data.frame 时设置行名并将某些列留空
- javascript - JS OpenLayers 在点击时获取 ol/Feature 值