通过 SQLalchemy URI 调用 RDS 时 Lambda 函数卡住

Lambda function gets stuck when calling RDS via SQLalchemy URI

我有一个快速的 API 应用程序。最初,我在 SAM 模板中像这样通过 ngrok 隧道传递我的 DB URI。在此设置中,Lambda 将使用我本地计算机的 PSQL 数据库。

  DbConnnectionString:
    Type: String
   Default: postgresql://<uname>:<pwd>@x.tcp.ngrok.io:PORT/DB

这就是我在 Python 代码中读取 URI 的方式

  # config.py
  DATABASE_URL = os.environ.get('DB_URI')
  db_engine = create_engine(DATABASE_URL)
  db_session = sessionmaker(autocommit=False, autoflush=False,bind=db_engine)
  print(f"Configs initialized for {API_V1_STR}")
# app.py

# 3rd party
from fastapi import FastAPI

# Custom
from config.app_config import PROJECT_NAME, db_engine
from models.db_models import Base

print("Creating all database")
Base.metadata.create_all(bind=db_engine)
app = FastAPI(title=PROJECT_NAME)
print("APP created")

在此设置中,一切似乎都按预期工作。

但是每当我用 RDS 数据库替换数据库 URL 时,调用突然卡在 create all database 步骤,如下图所示。发生这种情况时,lambda 总是超时并抛出异常。

我注意到配置在此设置中初始化了两次,一次在 START 请求 ID 之前,一次之后。

我已经尝试阅读它,但不清楚我能做些什么来解决这个问题。任何帮助将不胜感激。

是我的错!我没有注意安全组。一直都是连接超时。在我修复安全组中的端口访问后,lambda 开始按预期工作。