我正在尝试从单独的GCP项目中的GCP Google App Engine灵活环境连接到GCP Postgres Cloud SQL实例。我正在使用Python。
instructions表示这需要在Postgres Cloud SQL项目中添加默认的App Engine服务帐户作为IAM成员。
文档继续说明:
部署后,您的应用程序使用内置于App Engine灵活环境的Cloud SQL Proxy与您的Cloud SQL实例进行通信。
但是,我没有从GAE成功连接到Cloud SQL的运气。我尝试了多种主机地址(例如localhost
,<external-ip-address>
,/cloudsql/<INSTANCE_CONNECTION_NAME>
等。但似乎没有任何效果。
我想到了几个问题:
我是否需要手动为GAE实例提供服务帐户密钥?
连接参数或DSN字符串的Cloud SQL实例的实际主机位置是什么?文档引用/cloudsql/<INSTANCE_CONNECTION_NAME>
虽然我对此没有运气。
我是否需要创建一个共享网络来链接项目?
答案 0 :(得分:1)
我刚刚复制了您的用例场景,并且成功地将一个项目的Cloud SQL数据库与另一个项目的Cloud App Engine连接起来。
重现此步骤的步骤如下:
使用公共IP创建了Cloud SQL Postgresql数据库。
为我的应用程序创建了表
Enable the Cloud SQL API在我要托管App Engine端的第二个项目中。
在复制过程中,您可能遇到的问题。可能您没有启用第二个项目(仅托管App Engine的项目)的API。
要验证这一点,您只需要进入托管应用引擎的机器,然后运行docker ps -a
即可获得托管cloud-sql-proxy
的Docker容器的ID。然后使用该ID运行docker logs -f ID_OF_THE_CONTAINER
,您将看到Cloud SQL代理中是否有错误。如果您禁用了API,则只需启用它并再次部署即可。