我有一个公开的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
LAMBDA
安全小组
答案 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