Lambda本地连接到Aurora MySql - 部署到AWS时超时

时间:2018-05-14 00:12:43

标签: amazon-web-services asp.net-core aws-lambda aws-aurora

我有一个公开的Aurora MySql集群,因此我可以从本地工作站连接到它。我创建了一个aspnetcore项目,可以连接到数据库,查询并将结果返回给我,如果我在VS Code中本地运行lambda。

当我将Lambda部署到AWS(上传已发布的.zip)时,lambda执行API(通过API网关),不会与数据库进行任何交互。一旦我点击试图连接到Aurora的API,它就会超时并失败。

Lambda和RDS位于同一个VPC中,并位于相同的子网中。我试过RDS是公共的还是私人的,都没有工作。我的Lambda具有分配给它的IAM角色,授予它完整的RDS访问权限和完整的VPC访问权限。为了击中Aurora,lambda还需要什么?

我还尝试在相同的VPC /子网中运行Lambda,并且没有任何VPC。当我在没有连接VPC的情况下运行它时,我在Cloudwatch中恢复了整个堆栈跟踪,说它已经超时尝试连接。当我在VPC /子网中运行Lambda时,我没有从Lambda写入任何日志消息写入CloudWatch。

编辑以显示安全组设置

Aurora MySql RDS

enter image description here

LAMBDA

enter image description here

安全小组

enter image description here

2 个答案:

答案 0 :(得分:0)

在VPC内部,RDS实例的安全组需要有一条规则允许对与Lambda函数关联的安全组进行TCP端口3306的入站访问,或者对Lambda函数关联的所有子网进行入站访问用。

在VPC之外,RDS实例需要允许从0.0.0.0/0 ...或至少与所有EC2相关的整个区域(数百万个地址)的所有公共IP进行访问,因为Lambda

表示,VPC外部的功能可以从区域EC2池中动态获取其IP地址,因此最好避免使用。

答案 1 :(得分:0)

您的VPC中是否有足够的免费/可用IP用于lambda?

我发布了一个答案,可能的原因是这种情况,因为你提到当lambda在VPC中时没有日志

请在另一个StackOverflow问题

上查看我的回答here