首页 > 解决方案 > 尝试访问 Amazon RDS 数据库实例时来自 Lambda 的超时错误

问题描述

我正在编写一个 Python 应用程序以作为 lambda 函数运行,并希望连接到 RDS 数据库实例而不使其可公开访问。

RDS 数据库实例已在安全组“sg-abcd”的默认 VPC 下创建。

所以我有:

但是,当我调用 lambda 函数时,它会超时。

我可以从我的笔记本电脑连接到 RDS 数据库(在 sg 的入站规则中将我的 IP 设置为源之后),所以我现在知道这不是身份验证问题。此外,对于 RDS DB,“可公开访问”设置为“是”。

这是应用程序代码的一部分(我尝试连接的地方):

rds_host  = "xxx.rds.amazonaws.com"

port = xxxx

name = rds_config.db_username

password = rds_config.db_password

db_name = rds_config.db_name


logger = logging.getLogger()

logger.setLevel(logging.INFO)

try:
    conn = psycopg2.connect(host=rds_host, database=db_name, user=name, password=password, connect_timeout=20)

except psycopg2.Error as e:

    logger.error("ERROR: Unexpected error: Could not connect to PostgreSQL instance.")

    logger.error(e)

    sys.exit()

我真的无法理解我错过了什么。欢迎任何建议,请帮我解决!

编辑:我设置的入站规则如下所示:

Security group rule ID: sgr-123456789
Type Info: PostgreSQL
Protocol Info: TPC
Port range Info: 5432
Source: sg-abcd OR IP or CIDR range

标签: postgresqlamazon-web-servicesaws-lambdaamazon-rdsamazon-vpc

解决方案


推荐阅读