连接到AWS Lambda上部署的数据库形式.NET Core 3.1 API时出错

问题描述

我已经在AWS Lambda上部署了.NET Core API版本,但是当我尝试访问需要访问数据库的终端节点时出现此错误。

2020-08-11T13:28:38.230+03:00
[41m[30mfail[39m[22m[49m: Microsoft.EntityFrameworkCore.Database.Connection[20004]

2020-08-11T13:28:38.230+03:00
An error occurred using the connection to database 'xxx_xxx_xxx' on server 'xx.xx.xx.xx'.

2020-08-11T13:28:38.231+03:00
[Error] Microsoft.EntityFrameworkCore.Database.Connection: An error occurred using the connection to database 'xxx_xxx_xxx' on server 'xx.xx.xx.xx'. 

该数据库是一个MySQL,位于使用cPanel对其进行配置的另一台服务器上(不在AWS中),我可以使用该函数访问lambda函数(在远程访问部分中添加了lambda的公共IP) 。我也有一个使用外部API的端点,并且这个端点有效(所以不是Internet访问问题)。

是否需要做一些额外的配置才能使lambda函数连接到数据库?

解决方法

您需要检查Lambda网络配置。

调试Lambda网络的最简单方法是在具有相同安全组的Lambda的同一子网中运行EC2实例,并尝试建立从该服务器到MySQL数据库的连接。

您可以使用telnet来检查基本连接性,也可以安装Linux MySQL客户端以查看是否可以使用客户端连接到数据库。

可能有很多问题,下面列出了一些容易发生的问题:

  • 子网NACL不允许使用您的数据库IP进行连接。
  • 子网路由表没有指向您的数据库IP的路由。
  • 安全组不允许与数据库IP +端口的外部连接。

除了这些以外,您可能在另一台服务器上遇到网络问题。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...