首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将google云功能第2代连接到另一个项目的mysql

将google云功能第2代连接到另一个项目的mysql
EN

Stack Overflow用户
提问于 2022-09-07 12:47:47
回答 1查看 139关注 0票数 0

我有下面的命令来部署google云功能。

我使用相同的命令来部署gen1的google函数(除了标志--gen2 ),一切都很好。在具有数据库的项目中,我使用命令中设置的服务帐户设置了Cloud Sql Client的角色。

但是,当我部署谷歌云功能的gen2,我不能连接到另一个项目的数据库。考虑到gen2云函数使用Cloud Run,我还检查了Cloud Run使用的service-account,它与具有数据库的项目中具有Cloud Sql Clientservice account匹配。

我知道这个错误

代码语言:javascript
复制
SQLSTATE[HY000] [2002] No such file or directory
代码语言:javascript
复制
      gcloud functions deploy $CLOUD_FUNCTION_NAME-staging-gen2
      --gen2
      --source=./src
      --runtime=$CLOUD_FUNCTION_PHP_VERSION
      --trigger-http
      --entry-point=$CLOUD_FUNCTION_ENTRY_POINT
      --allow-unauthenticated
      --region=$GCP_ZONE
      --project=$PROJECT_ID
      --env-vars-file .env.yml
      --min-instances=$MINIMUM_NUMBER_OF_INSTANCES
      --service-account=*******@appspot.gserviceaccount.com
      ${VPC_CONNECTOR:+--vpc-connector projects/$PROJECT_ID/locations/$GCP_ZONE/connectors/$VPC_CONNECTOR}

我还尝试在部署时不设置--service-account,让它使用默认设置。然后,我在带有Cloud Sql Client角色的IAM部分中将默认服务帐户添加到具有数据库的项目中,但它仍然无法工作。

我使用unix_socket连接到数据库,因为数据库驻留在另一个项目中。

代码语言:javascript
复制
"mysql:dbname=${dbname};port=${port};unix_socket=/cloudsql/${instanceConnectionName}"

其中instanceConnectionName是project_name:europe-west4:database_name

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-19 19:24:07

根据https://cloud.google.com/sql/docs/mysql/connect-functions,您必须将连接添加到使用gen 2云函数自动部署的云运行服务中。其他数据库类型也是如此。滚动到“如果您使用的是云函数(第2代)而不是云功能(第1代)”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73635802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档