从AWS lambda到AWS Redshift的{SSL}连接

时间:2018-02-03 02:58:58

标签: amazon-web-services lambda .net-core npgsql

我正在尝试使用c#,dotnet core 2.0和npgsql从lambda函数连接到AWS Redshift数据库。我遇到SSL问题。

我在专用的VPC中创建了两个不可公开访问的Redshift数据库。 lambda在同一个VPC中执行。这两个数据库在各方面都是相同的,只有一个具有强制SSL"参数设置为true。

使用以下代码段,我可以正常访问非SSL数据库:

 using (var conn = new  NpgsqlConnection ("Host=x; Port=5439; Username=x; 
                Password=x;Database=xxx")
                {
                    Console.WriteLine("Redshift pre-Open!");
                    conn.Open();
                    Console.WriteLine("Redshift: post-Open!");
                    ...
                 }

当我访问SSL数据库时,我得到了"缺少hba.conf"错误信息 - 似乎是标准的,我以前见过它......    当我附加到连接字符串时:" ssl Mode = Require;服务器兼容模式= Redshift; Trust Server Certificate = true"    conn.open语句挂起,第二个写语句永远不会出现在cloudwatch中。

然而......当通过rest API和C#/ dotnetcore 2 WEBAPI(相同的运行时环境)访问同一个数据库时,此连接语句有效 EC2实例和负载均衡器。

连接到SSL数据库的Python lambda,在相同的环境中 - 子网,安全组,lambda触发器,lambda参数......工作得很好。

csproj引用了Amazon.Lambda.Core 1.0.0,Amazon.Lambda.Serialization.Json 1.1.0,以及 Npgsql.EntityFrameworkCore.PostgreSQL 2.0.1。

我可能会在另一个环境中尝试Wireshark - 但作为一个lambda运行,我不确定如何最好地调试。我已经尝试了许多排列和组合,我不会把它放在过去,因为我错过了一些令人眼花缭乱的东西, 但我绝对不明白为什么要挂。谢谢。

0 个答案:

没有答案