google-cloud-platform - 连接被拒绝:在将 Google Cloud postgresql 与 Cloud Function 连接时
问题描述
我正在尝试将谷歌云 sql 实例与用 python 编写的云函数连接起来。
global pg_pool, pg_pool_db_name
pg_config = {
'user': CONNECTION_DATA[dbname]['DB_USER'],
'password': CONNECTION_DATA[dbname]['DB_PASSWORD'],
'host': host,
'dbname': dbname
}
pg_pool = ThreadedConnectionPool(1, 1, **pg_config)
此函数测试调用失败并输出错误消息:
Error: function terminated. Recommended action: inspect logs for termination reason. Details:could not connect to server: Connection refused
Is the server running locally and accepting
connections on Unix domain socket "/cloudsql/my_instance_name/.s.PGSQL.5432"?
任何人都经历过这种情况。
解决方案
我写了一篇关于从谷歌云函数连接到 Cloud SQL的教程
9.Create a service account for your cloud function. Ensure that the service account for your service has the following IAM roles: Cloud SQL Client, and for connecting from Cloud Functions to Cloud Sql on internal ip we need also the role Compute Network User.
gcloud iam service-accounts create cloud-function-to-sql
gcloud projects add-iam-policy-binding gcf-to-sql --member serviceAccount:cloud-function-to-sql@gcf-to-sql.iam.gserviceaccount.com --role roles/cloudsql.client
gcloud projects add-iam-policy-binding gcf-to-sql --member serviceAccount:cloud-function-to-sql@gcf-to-sql.iam.gserviceaccount.com --role roles/compute.networkUser
然后使用您刚刚创建的服务帐户部署该功能:
2.Deploy the cloud function:
gcloud beta functions deploy gcf_to_sql --runtime python37 --region europe-west2 --service-account cloud-function-to-sql --trigger-http
编辑
请阅读本文档:
1.创建服务帐号
单击更多以显示高级选项,例如设置区域、指定超时或添加环境变量
在高级选项中,选择您刚刚创建的服务帐户。
推荐阅读
- mysql - MySQL - 获取没有时区偏移的日期
- mysql - 从 3 个 mySQL 表中提取数据
- reactjs - 未捕获的类型错误:无法重新定义属性:UIRouter
- ruby - Sharetribe - 重定向到 projectname.lvh.me 和 500 内部服务器错误
- angular - Karma 测试 NullInjectorError: No provider for InjectionToken fileName
- php - Bootstrap 4 表 td 宽度尺寸自定义
- android - 片段管理 - 导航抽屉
- r - 原始数据在小鼠汇总估计中的作用(R 包)?
- opengl - 更新 SSBO 内容
- azure-active-directory - 通过 msal.js 刷新令牌