无法通过unix套接字从托管在不同GCP项目中的App Engine Flexible Environment连接到Cloud SQL

时间:2018-06-18 01:06:15

标签: google-app-engine google-cloud-platform google-cloud-sql app-engine-flexible

我有一个在Google App Engine灵活环境中运行Cloud SQL和Django App的GCP项目,它运行正常。但是,当我尝试从另一个项目连接到同一个Cloud SQL实例时,由于未按照app.yaml中 cloud_sql_instances 的指定创建套接字,因此它无法正常工作:

runtime: custom
env: flex
automatic_scaling:
  min_num_instances: 1
beta_settings:
    cloud_sql_instances: myproject:myzone:mydbinstance
env_variables:
    SQLALCHEMY_DATABASE_URI: >-
      postgresql+psycopg2://myuser:mypass@/mydb?host=/cloudsql/myproject:myzone:mydbinstance

重现的步骤:

  1. 创建GCP项目A
  2. 在项目A中创建Cloud SQL postgres实例
  3. 将应用程序部署到项目A中的应用程序引擎灵活环境,按照以下步骤将应用程序连接到Cloud SQL:https://cloud.google.com/appengine/docs/flexible/python/using-cloud-sql-postgres
  4. SSH进入项目A中的实例(通过Web控制台)
  5. $ ls /cloudsql/ - >应该显示套接字文件
  6. 创建GCP项目B
  7. 将相同的应用程序部署到项目B中的应用引擎灵活环境,按照以下步骤连接并授权应用程序投影A的云SQL:https://cloud.google.com/appengine/docs/flexible/python/using-cloud-sql-postgres
  8. SSH进入项目B中的实例(通过Web控制台)
  9. $ ls /cloudsql/ - >目录为空,套接字不存在。
  10. 如何让项目B显示套接字?

1 个答案:

答案 0 :(得分:1)

我通过为项目B启用Cloud SQL Administration API解决了这个问题。之前,我只为项目A启用了它。