项目A-在Flask和Python中运行webapp(端点为@ app.route...。)
项目B-在Flask和Python中运行另一个Web应用程序(端点为@ app.route...。)
我们在Google Cloud Platform的项目A中有一个MySQL(CLOUD SQL)实例。我们正在使用Unix套接字进行连接,它在项目A中的连接就很好(在项目A中一切都很好)。
但是,当我们在GCP中为项目B使用相同的MySQL实例时,会给出2002-连接被拒绝的错误。和浏览器页面上的(“内部服务器错误”)(因为它无法连接到数据库)。
需要帮助来了解如何在2个项目中连接GCP中的单个MySQL(Cloud SQL)实例。 (在同一帐户中) 注意:所有这些都在同一地区
答案 0 :(得分:1)
我了解到您的Cloud SQL实例具有公共IP,并且您正在app.yaml中为2个应用正确设置“ CLOUD_SQL_CONNECTION_NAME”配置。因为如果您在Cloud SQL实例中使用私有IP,则将无法进行此连接(除非Cloud SQL实例驻留在主机项目中和/或为Cloud SQL VPC对等启用了导入/导出自定义路由,但是,实施此最后一个选项,则需要与GCP支持人员联系。
话虽如此,如果您使用公共IP,则唯一需要做的就是为项目B提供App Engine服务帐户(该帐户应类似于“ service- [YOUR_PROJECT_NUMBER_B] @ gae-api项目A的IAM部分中的-prod.google.com.iam.gserviceaccount.com“)连接到Cloud SQL的权限(完成此任务的最严格的预定义角色是“ Cloud SQL Client”角色)。