我通过 CDK 创建了一个包含一个读取器和一个写入器实例的 Aurora Serverless V2 集群。
现在我尝试通过添加参数组来为此集群启用 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 Consule UI 表示 Babelfish 已打开并正在侦听端口 1433。
但是当我尝试使用 MSSQL Server Management Studio 连接到数据库时,我收到以下错误消息:
这是 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
当我通过 AWS 管理控制台使用 Babelfish 手动创建 Aurora 数据库时,连接正常。
要连接 Babelfish 中的 TDS 端口,您必须使用创建实例时指定的主用户。当您通过 PG 端口创建 PG 用户时,您无法使用该用户连接到 TDS 端口(这是设计使然),并且您会收到您所描述的错误类型。在 TDS 中运行 CREATE LOGIN 时,这将在幕后创建一个新的 PG 用户,该用户将被允许用于连接到 TDA 端口。 最后,请注意,您必须在开始时创建一个启用 Babelfish 的集群:当您首先创建 PG 集群,然后尝试单独启用 Babelfish 时,这将不起作用(但不确定这是否是您正在做的事情)。