我已经在单个 GCP 项目中启动并运行了 DataFusion 和 Cloud SQL Postgres。
我可以使用 pgAdmin 成功连接到我的 postgres 实例(只要我将我的 IP 地址添加到 postgres 实例设置中允许的网络),也可以通过 GCP 云外壳连接到我的 postgres 实例。
然而,无论我如何尝试,都无法成功连接数据融合实例。
无论我尝试什么,我都会收到以下错误:
Failed to create connection to database via connection string: jdbc:postgresql:///myDatabase?cloudSqlInstance=myProject-388422:us-central1:myInstance&socketFactory=com.google.cloud.sql.postgres.SocketFactory and arguments: {user=myUser}. Error: GoogleJsonResponseException: 403 Forbidden { "code" : 403, "errors" : [ { "domain" : "global", "message" : "The client is not authorized to make this request.", "reason" : "notAuthorized" } ], "message" : "The client is not authorized to make this request." }. Make sure you specify the correct connection properties.
这是我尝试过的:
向自动创建的服务用户添加了以下角色 - Cloud Data Fusion Runner Cloud SQL Admin Cloud SQL Client Cloud SQL Editor Cloud SQL Instance User Cloud SQL Service Agent Cloud SQL Viewer Dataproc Worker Editor
向我自己的用户添加了相同的内容
创建了新的服务用户并添加了相同的角色
启用了 Cloud SQL 和 Cloud SQL 管理 API
以上方法均无济于事,我似乎找不到任何其他可以帮助我的建议。(我不确定是否需要“设置”数据融合实例以使用特定服务用户……这可能是一件愚蠢的事情)
我技术精湛,但不是 GCP 专家,所以可能会忽略一些显而易见的东西。真心希望有人能帮忙
(此外,如果这个问题已经在这个论坛的其他地方被问到,我深表歉意。如果是这样的话,我找不到它)
答案1
解决了!
(不确定为什么我之前没有看到这个帖子,也不确定我是否可以在这里发布 stackoverflow 链接,所以提前向版主道歉。请根据需要进行谴责和修改)
简而言之,我必须向自动创建的数据融合服务帐户添加权限,您无法在 IAM 部分或服务用户部分看到该帐户,但可以为其添加角色和权限。