Google cloud platform 如何将AI平台培训工作连接到云SQL PSQL DB?
我有一个简单的python程序,可以连接到google云平台上的PSQL数据库。当我在本地运行它时,它通过主机地址(公共IP)、端口、用户名和密码成功地连接到DB(只有在我手动告诉DB允许我的本地IP地址的情况下) 当我将其打包到Docker映像中并在本地运行时,它会成功连接(仅当我手动告诉DB允许我的本地IP地址时) 这就是它失败的地方: 如果我停止告诉DB允许我的本地IP地址,它就会失败 另外,在我将docker图像推送到google云容器注册表之后。 然后使用ai平台培训作业抓取容器并通过代码执行操作:Google cloud platform 如何将AI平台培训工作连接到云SQL PSQL DB?,google-cloud-platform,google-cloud-sql,google-cloud-ml,gcp-ai-platform-training,Google Cloud Platform,Google Cloud Sql,Google Cloud Ml,Gcp Ai Platform Training,我有一个简单的python程序,可以连接到google云平台上的PSQL数据库。当我在本地运行它时,它通过主机地址(公共IP)、端口、用户名和密码成功地连接到DB(只有在我手动告诉DB允许我的本地IP地址的情况下) 当我将其打包到Docker映像中并在本地运行时,它会成功连接(仅当我手动告诉DB允许我的本地IP地址时) 这就是它失败的地方: 如果我停止告诉DB允许我的本地IP地址,它就会失败 另外,在我将docker图像推送到google云容器注册表之后。 然后使用ai平台培训作业抓取容器并通过
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并在DB设置中手动“允许”它
我想通过IAM服务器帐户促进连接。我为所有服务授予了以下权限:
云SQL管理员、云SQL编辑器、云SQL客户端、云SQL实例用户、云SQL服务代理
正如你所知道的,我给了每个我可以的帐户权限,但它仍然无法连接。任何帮助都将不胜感激
另外,当我呼叫gcloud ai平台作业提交培训时。。。我知道某个服务帐户创建了一个实例来执行作业。我认为是这个实例无法连接。我已经读了这么多gcloud文档,我感到困惑。也许我遗漏了一些明显的东西:(当你在AI平台上运行作业时,你在无服务器环境下运行它。不是在你的项目中,而是在Google端的某个地方,但不是在你的项目中。因此,创建的VM不在你的项目中(你不会在计算引擎页面中看到它们),因此也不在你的VPC中 因此,打开端口5432是完全无用的,因为它不是同一个网络。唯一的解决方案是在数据库上保留一个公共IP(没有网络授权,只有公共IP)并使用云SQL代理(即使你不想) 当然,另一个解决方案是在PSQL公共IP上授权0.0.0.0/0网络,但这绝对不是一个好建议 然而,我有一点要说:在培训工作中直接使用数据库不是正确的模式。事实上,在培训工作中,你需要速度、效率和减少延迟。使用数据库对这一点来说并不是很好 正确的模式可能是
- 在之前准备好数据(从数据库中提取数据,并将其保存到文件中(例如csv格式))
- 将文件存储在区域存储桶中(如果效率更高,则不是多区域存储)
- 将培训作业更改为使用文件而不是SQL查询
- 在与您所在地区相同的地区开展培训工作
- 在之前准备好数据(从数据库中提取数据,并将其保存到文件中(例如csv格式))
- 将文件存储在区域存储桶中(如果效率更高,则不是多区域存储)
- 将培训作业更改为使用文件而不是SQL查询
- 在与您所在地区相同的地区开展培训工作