将谷歌云功能第二代连接到另一个项目的mysql



我有以下命令来部署谷歌云功能。

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

但是当我部署gen2的谷歌云功能时,我无法连接到其他项目的数据库。假设gen2云函数使用Cloud Run,我还检查了Cloud Run使用的service-account,并且它与具有数据库的项目中具有Cloud Sql Clientservice account相匹配。

我收到这个错误

SQLSTATE[HY000] [2002] No such file or directory
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,并让它使用默认值。然后,我在IAM部分添加了默认的服务帐户,该帐户具有数据库,角色为Cloud Sql Client,但它仍然不起作用。

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

"mysql:dbname=${dbname};port=${port};unix_socket=/cloudsql/${instanceConnectionName}"

其中instanceConnectionName为项目名称:欧洲西部4:数据库名称

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

相关内容

  • 没有找到相关文章

最新更新