使用私有 IP 将 BigQuery 连接到 CloudSQL

Connecting BigQuery to CloudSQL with private IP

我正在尝试使用“外部数据源”将 BigQuery 连接到 CloudSQL Postgres 数据库。设置连接后,我在 BigQuery 中看到此错误:

Invalid table-valued function EXTERNAL_QUERY
Connect to PostgreSQL server failed: server closed the connection unexpectedly
    This probably means the server terminated abnormally
    before or while processing the request.
 at [1:15]

我尝试设置一个沙箱项目,运行 遇到了同样的问题。然后我尝试在 CloudSQL 配置中启用“Public IP”连接,这似乎解决了沙箱中的问题。

我希望能够在不打开 public IP 的情况下执行此操作,因为我只想将我的数据保留在我的专用网络中。是否可以按照我描述的方式将私有 IP CloudSQL 实例与 BigQuery 一起使用?

检查服务帐户 [1] 在项目中是否具有角色“cloudsql.client”。如果找不到角色“cloudsql.client”

的服务帐户,请手动添加

[1] 服务-@gcp-sa-bigqueryconnection.iam.gserviceaccount.com

原因- BigQuery 使用内部服务帐户访问 Cloud SQL 个实例。此服务帐户是在每个客户项目首次为其 Cloud SQL 实例创建 BQ 连接时创建的。此服务帐户在用户项目中具有 cloudsql.client 角色。如果出于任何原因从项目中删除此服务帐户,将遇到权限被拒绝的错误。

根据 documentation,不支持使用私有 IP 在 Cloud SQL 和 Big Query 之间建立连接,应该使用 public 个 IP。

作为替代方案,您可以添加 public 没有授权地址的 IP 连接。

虽然这不如仅使用私有 IP 安全,但您的实例将无法从 public 互联网访问,并且可以从 BigQuery 查询。

您可以查看有关 public 云 IP SQL here 的更多信息。