我有一个简单的 python 程序可以连接到谷歌云平台上的 PSQL DB。当我在本地运行它时,它通过主机地址(公共 IP)、端口、用户名和密码成功连接到数据库(仅当我手动告诉数据库允许我的本地 IP 地址时)。
当我将其打包在 Docker 映像中并在本地运行时,它会成功连接(仅当我手动告诉数据库允许我的本地 IP 地址时)。
这是失败的地方:如果我停止告诉数据库允许我的本地 IP 地址,它就会失败。
此外,在我将 docker 映像推送到谷歌云容器注册表之后。然后使用ai-platform训练作业抓取容器并通过代码做一些事情:
gcloud ai-platform jobs submit training $JOB_NAME --region $REGION --master-image-uri $IMAGE_URI -- app.py --user_arg='Y'
我通过标志与图像通信,我确信图像响应正确。但是,当我尝试连接到 PSQL DB 时,出现错误:
psycopg2.OperationalError: could not connect to server: Connection timed out.
Is the server running on host ... and accepting TCP/IP connections on port ...?
我不想使用云 sql 代理来解决这个问题,也不想设置任何类型的静态 IP 并在数据库设置中手动“允许”它。
我想通过 IAM 服务器帐户促进连接。我为所有服务授予以下权限:Cloud SQL Admin、Cloud SQL Editor、Cloud SQL Client、Cloud SQL Instance User、Cloud SQL Service Agent。
如您所知,我为每个帐户都授予了权限,但仍然无法连接。任何帮助,将不胜感激!
另外,当我调用 gcloud ai-platform 作业提交培训时......我知道某些服务帐户会创建一个实例来执行作业。我认为是这个实例无法连接。我已经阅读了很多 gcloud 文档,我很困惑。也许我错过了一些明显的东西:(