PostgreSQL连接类型

更新时间:
复制 MD 格式

本文介绍 EventBridge 中 PostgreSQL 连接类型的参数定义、创建方式和注意事项。

概述

PostgreSQL 连接类型用于建立 EventBridge 与 PostgreSQL 数据库之间的连通性。创建 PostgreSQL 连接后,可在 EventHouse 数据目录(Catalog)中挂载该连接,将 PostgreSQL 表映射为可查询的事件表。

支持的 PostgreSQL 实例:

  • 阿里云 RDS PostgreSQL(10 及以上版本,推荐 14 或更高)

  • 阿里云 PolarDB PostgreSQL

  • 自建 PostgreSQL 实例

连接参数

参数

字段名

类型

是否必填

说明

主机地址

HostName

string

PostgreSQL 主机地址。RDS 实例填写实例域名(如 pgm-xxx.pg.rds.aliyuncs.com),自建实例填写 IP 地址。

端口号

Port

string

PostgreSQL 端口号,默认 5432

用户名

User

string

数据库连接用户名。建议使用只读账号。

密码

Password

string

数据库连接密码。

数据库名称

DatabaseName

string

要连接的数据库名称。PostgreSQL 不支持跨数据库查询,必须指定目标数据库。

参数示例

{
  "HostName": "pgm-bp1xxxxx.pg.rds.aliyuncs.com",
  "Port": "5432",
  "User": "readonly_user",
  "Password": "your_password",
  "DatabaseName": "analytics_db"
}

创建 PostgreSQL 连接

通过控制台创建

  1. 登录事件总线EventBridge控制台

  2. 在左侧导航栏,选择 集成中心 > 连接管理。

  3. 在顶部菜单栏,选择地域,然后单击 创建连接。

  4. 连接类型选择 PostgreSQL,填写连接参数。

  5. 单击 测试连接 验证连通性。

  6. 测试通过后,单击 确定。

通过 API 创建

使用 CreateConnection API 创建 PostgreSQL 连接:

{
  "ConnectionName": "my-pg-conn",
  "Type": "PostgreSQL",
  "Parameters": {
    "HostName": "pgm-bp1xxxxx.pg.rds.aliyuncs.com",
    "Port": "5432",
    "User": "readonly_user",
    "Password": "your_password",
    "DatabaseName": "analytics_db"
  }
}

网络配置

网络类型

说明

适用场景

公网

通过公网连接,无需额外配置

PostgreSQL 实例已开放公网访问(RDS 需开启外网地址)

VPC 私网

通过 VPC 内网连接

PostgreSQL 实例部署在 VPC 内

使用 VPC 私网时,需额外配置:

  • VPC ID:PostgreSQL 实例所在 VPC。

  • 交换机 ID(VSwitch ID):VPC 内的交换机。

  • 安全组 ID:安全组入方向规则需放行 PostgreSQL 端口(5432)。

EventBridge 会自动打通与客户 VPC 的网络连通,无需客户侧做额外网络对接。

除安全组外,还需确认 PostgreSQL 的 pg_hba.conf 已允许 EventBridge 的 IP 地址连接。RDS PostgreSQL 可在控制台的"白名单设置"中添加 IP。

使用场景

Catalog 挂载(已支持)

将 PostgreSQL 连接挂载到 EventHouse Catalog,即可通过 SQL 直接查询 PostgreSQL 表:

-- 查询 PostgreSQL 中的用户表
SELECT * FROM my_catalog.user_namespace.users LIMIT 10;

-- 跨源三联 JOIN:PostgreSQL + MySQL + EventHouse 事件表
SELECT u.user_name, o.amount, e.event_type
FROM my_catalog.user_namespace.users u
JOIN my_catalog.order_namespace.orders o ON u.user_id = o.user_id
JOIN my_catalog.event_namespace.payment_events e ON o.order_id = e.order_id
WHERE e.event_type = 'PaymentFailed';

详细操作请参见数据目录 Catalog

Schema 与表

PostgreSQL 支持多 Schema 结构。挂载到 Catalog 时,可选择 public 或其他自定义 Schema 下的表。Catalog 会将 Schema 信息保留在命名空间路径中。

权限要求

建议为 EventBridge 创建专用的只读账号:

-- 创建只读角色
CREATE ROLE eb_readonly WITH LOGIN PASSWORD 'your_password';
-- 授予 Schema 使用权限
GRANT USAGE ON SCHEMA public TO eb_readonly;
-- 授予表查询权限
GRANT SELECT ON ALL TABLES IN SCHEMA public TO eb_readonly;
-- 设置默认权限(对新建表自动生效)
ALTER DEFAULT PRIVILEGES IN SCHEMA public
  GRANT SELECT ON TABLES TO eb_readonly;

EventBridge 仅需 SELECT 权限,不会修改 PostgreSQL 中的数据。

常见问题

Q:测试连接失败,提示 "Connection refused"?

A:请检查:

  • PostgreSQL 实例是否正常运行。

  • 主机地址和端口是否正确。

  • pg_hba.conf(或 RDS 白名单)是否允许 EventBridge 的 IP 地址连接。

  • 安全组或防火墙是否放行了 5432 端口。

  • 如果使用 VPC 私网,确认 VPC 和交换机配置正确。

Q:测试连接成功但挂载后查询报 "permission denied for table"?

A:测试连接仅验证网络连通性和基本认证。挂载后查询需要用户对目标 Schema 和表具有 SELECT 权限。请确认 pg_hba.conf、Schema 权限和表权限均已正确配置。

Q:DatabaseName 为什么是必填的?

A:PostgreSQL 不支持跨数据库查询。连接时必须指定目标数据库,Catalog 会在该数据库内发现可挂载的 Schema 和表。如果需要访问多个数据库,需创建多个 PostgreSQL 连接。

Q:连接创建后能否修改参数?

A:可以修改主机地址、端口、用户名、密码和数据库名称。连接名称和连接类型创建后不可修改。