本文介绍 EventBridge 中 PostgreSQL 连接类型的参数定义、创建方式和注意事项。
概述
PostgreSQL 连接类型用于建立 EventBridge 与 PostgreSQL 数据库之间的连通性。创建 PostgreSQL 连接后,可在 EventHouse 数据目录(Catalog)中挂载该连接,将 PostgreSQL 表映射为可查询的事件表。
支持的 PostgreSQL 实例:
阿里云 RDS PostgreSQL(10 及以上版本,推荐 14 或更高)
阿里云 PolarDB PostgreSQL
自建 PostgreSQL 实例
连接参数
参数 | 字段名 | 类型 | 是否必填 | 说明 |
主机地址 | HostName | string | 是 | PostgreSQL 主机地址。RDS 实例填写实例域名(如 |
端口号 | Port | string | 是 | PostgreSQL 端口号,默认 |
用户名 | 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 连接
通过控制台创建
在左侧导航栏,选择 集成中心 > 连接管理。
在顶部菜单栏,选择地域,然后单击 创建连接。
连接类型选择 PostgreSQL,填写连接参数。
单击 测试连接 验证连通性。
测试通过后,单击 确定。
通过 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:可以修改主机地址、端口、用户名、密码和数据库名称。连接名称和连接类型创建后不可修改。