使用AWS CDK启用Aurora Babelfish后SSMS连接失败问题排查
问题描述
通过AWS CDK创建Aurora Serverless V2(Aurora Postgres 15.2)集群,添加参数组启用Babelfish:
const auroraParameterGroup = new rds.ParameterGroup(this, "AuroraParameterGroup", { engine: rds.DatabaseClusterEngine.auroraPostgres({ version: rds.AuroraPostgresEngineVersion.VER_15_2 }), parameters: { "rds.babelfish_status": "on" } })
AWS RDS控制台显示Babelfish已开启并监听1433端口,但使用Microsoft SQL Server Management Studio(SSMS)连接时失败。手动通过控制台创建的带Babelfish的Aurora集群可正常连接。完整CDK代码如下:
const auroraCluster = new rds.DatabaseCluster(this, 'AuroraCluster', { parameterGroup: auroraParameterGroup, engine: rds.DatabaseClusterEngine.auroraPostgres({ version: rds.AuroraPostgresEngineVersion.VER_15_2 }), storageEncryptionKey: rdsKey, instances: 2, credentials: rds.Credentials.fromSecret(auroraCredentials), instanceProps: { enablePerformanceInsights: true, publiclyAccessible: true, vpc: props.vpc, vpcSubnets: props.vpc.selectSubnets({ subnetGroupName: props.databaseSubnetGroupName }), instanceType: new InstanceType('serverless'), }, }); auroraCluster.connections.allowFromAnyIpv4(aws_ec2.Port.tcp(5432)) auroraCluster.connections.allowFromAnyIpv4(aws_ec2.Port.tcp(1433)) //babelfish
解决方案
1. 手动完成Babelfish初始化
CDK创建集群时,仅开启rds.babelfish_status参数不会自动完成Babelfish初始化(控制台创建会自动执行该流程),需手动操作:
- 使用psql连接Postgres集群的写入端点,执行SQL检查初始化状态:
SELECT * FROM sys.babelfish_version; - 若返回报错,执行初始化命令:
EXEC sp_babelfish_configure 'babelfishpg_tsql.database_name', 'master'; - 执行完成后,重启Aurora集群实例。
2. 补充参数组关键配置
修改CDK参数组,添加Babelfish必要配置,确保监听范围和默认数据库正确:
const auroraParameterGroup = new rds.ParameterGroup(this, "AuroraParameterGroup", { engine: rds.DatabaseClusterEngine.auroraPostgres({ version: rds.AuroraPostgresEngineVersion.VER_15_2 }), parameters: { "rds.babelfish_status": "on", "babelfishpg_tsql.listen_addresses": "*", // 允许所有地址访问Babelfish "babelfishpg_tsql.database_name": "master" // 指定Babelfish默认数据库 } })
部署更新后的CDK栈,并重启集群实例使参数生效。
3. 修正SSMS连接参数
确保SSMS使用正确的连接配置:
- 服务器名称:使用Aurora集群的写入端点(而非单个实例端点)
- 端口:1433
- 身份验证:选择「SQL Server身份验证」,使用Postgres超级用户(如
postgres)及对应密码 - 数据库:填写
master(Babelfish的默认数据库,非Postgres原生的postgres数据库) - 加密连接:勾选该选项(Aurora默认强制SSL连接)
4. 确认网络配置
- 验证安全组入站规则已正确放行1433端口到你的客户端IP(代码中
allowFromAnyIpv4已设置,可手动确认规则是否生效) - 检查VPC网络ACL是否允许1433端口的双向流量
- 确认集群
publiclyAccessible属性已设为true(代码中已配置)
内容的提问来源于stack exchange,提问作者Vincent Elbracht
相关产品推荐
相关产品推荐

