AWS Lambda - 无法连接到VPC中的SQL Server RDS

时间:2017-05-13 06:23:48

标签: sql-server .net-core aws-lambda amazon-rds

我正在尝试从我的VPC中的AWS Lambda连接到我的SQL Server RDS实例(使用.net核心)。

当我尝试运行Lambda函数时,它返回:

  

" errorType":" SqlException"," errorMessage":"连接超时已过期。在登录后阶段过去了超时时间。在等待服务器完成登录过程并响应时,连接可能已超时;或者在尝试创建多个活动连接时可能会超时。尝试连接到此服务器所花费的时间是 - [Pre-Login] initialization = 781;握手= 1957; [登录]初始化= 40;认证= 122; [登录后]完成= 12219;",

我已配置以下内容:

  • RDS实例和Lambda都在同一个VPC中
  • RDS实例和Lambda都在同一个AZ和子网
  • Lambda属于自己的安全组
  • RDS实例安全组已授予Lambda SG端口1433
  • 的权限
  • Lambda IAM角色拥有AWSLambdaFullAccess和AWSLambdaVPCAccessExecutionRole
  • 的权限
  • MSSQL连接字符串(端点,用户ID,密码等)来自同一VPC / AZ /子网中的EC2实例。

连接字符串如下所示(使用Dapper作为我的ORM)

string dbconnstr = @"server=vpc100-db.xyz.us-west-1.rds.amazonaws.com;database=dbMyDb;user id=sa;password=mypwd;";

知道我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

解决。数据库引擎版本是个问题。

事实证明,这不是Lambda或VPC和RDS的权限问题。无法从Lambda(通过c#.net核心)连接到RDS是数据库版本!我正在连接到RDS MS SQL 2008 R2,它使用本地代码而不是Lambda。当我将RDS目标数据库更改为MS SQL 2016时,它工作正常!