我有下面的命令来部署google云功能。
我使用相同的命令来部署gen1的google函数(除了标志--gen2 ),一切都很好。在具有数据库的项目中,我使用命令中设置的服务帐户设置了Cloud Sql Client的角色。
但是,当我部署谷歌云功能的gen2,我不能连接到另一个项目的数据库。考虑到gen2云函数使用Cloud Run,我还检查了Cloud Run使用的service-account,它与具有数据库的项目中具有Cloud Sql Client的service 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,让它使用默认设置。然后,我在带有Cloud Sql Client角色的IAM部分中将默认服务帐户添加到具有数据库的项目中,但它仍然无法工作。
我使用unix_socket连接到数据库,因为数据库驻留在另一个项目中。
"mysql:dbname=${dbname};port=${port};unix_socket=/cloudsql/${instanceConnectionName}"其中instanceConnectionName是project_name:europe-west4:database_name
发布于 2022-09-19 19:24:07
根据https://cloud.google.com/sql/docs/mysql/connect-functions,您必须将连接添加到使用gen 2云函数自动部署的云运行服务中。其他数据库类型也是如此。滚动到“如果您使用的是云函数(第2代)而不是云功能(第1代)”
https://stackoverflow.com/questions/73635802
复制相似问题