首页 文章

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

提问于
浏览
1

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

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

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

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

编辑以显示安全组设置

Aurora MySql RDS

enter image description here

Lambda

enter image description here

Security Group

enter image description here

2 回答

  • 0

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

    在VPC之外,RDS实例需要允许从0.0.0.0/0 ...或至少所有与整个区域(几百万个地址)的EC2相关联的所有公共IP进行访问,因为Lambda函数在VPC从区域EC2池动态获取其IP地址 - 因此最好避免这种情况 .

  • 0

    你的VPC中有足够的免费/可用IP用于你的lambda吗?

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

    请参阅另一个StackOverflow问题的答案here

相关问题