【发布时间】:2017-12-13 16:19:58
【问题描述】:
您好,我遇到了与 this post 相同的问题,但没有提供发布的答案(没有示例代码),所以我将开始一个新线程并询问你们。
我已经为我们的 lambda 函数创建了一个 AWS Serverless Application (.Net Core) 项目,下面的代码是我用来在 AWS RDS 中连接的代码。
string ConnectionString = "Data Source=rds4abc1190.asdfqwerqb9l.us-east-1.rds.amazonaws.com,2855;Initial Catalog=MyDatabase;Persist Security Info=True;User ID=myID;Password=mypassword;Encrypt=False";
using (var Conn = new SqlConnection(ConnectionString))
{
using (var Cmd = new SqlCommand("SELECT * from Customer", Conn))
{
Conn.Open(); //<-- this is where the error fires.
SqlDataReader rdr = Cmd.ExecuteReader();
while (rdr.Read())
{
myDbItems.Add(rdr[1].ToString());
}
Conn.Close();
}
}
在本地机器上运行时使用上述代码可以正常工作,但如果部署在 AWS Api Gateway 中,该代码会出错。
"errorType": "SqlException", "errorMessage": "Connection Timeout Expired。在登录后阶段超时时间已过。连接可能在等待服务器完成登录过程并响应时超时;或者它可能在尝试创建多个活动连接时超时。尝试连接到此服务器所花费的持续时间是 - [登录前] 初始化 = 781;握手 = 1957;[登录] 初始化 = 40;身份验证 = 122;[登录后] complete=12219;",
【问题讨论】:
-
您的 lambda 是否驻留在与有权访问 SQLServer RDS 子网的 SQLServer 位于同一 VPC 的 VPC 子网中?
标签: c# .net-core aws-lambda amazon-rds aws-api-gateway