Mysql 如何使用SQLAlchemy为RDS代理设置TLS

Mysql 如何使用SQLAlchemy为RDS代理设置TLS,mysql,aws-lambda,sqlalchemy,amazon-rds,python-3.8,Mysql,Aws Lambda,Sqlalchemy,Amazon Rds,Python 3.8,我有一个AWS Lambda函数(Python3.8),其中我试图使用SQLAlchemy连接到RDS代理。我已经确认,通过使用PyMySQL直接连接到代理,函数配置将允许这样做。当我运行该函数时,会收到一条错误消息“(pymysql.err.InternalError)(3159,‘此RDS代理需要TLS连接’)\n(此错误的背景信息:)”。该错误的“背景”与TLS无关。我理解我需要做什么(告诉SQLAlchemy使用SSL/TLS进行连接),但我无法理解这样做的语法。下面是我当前的代码 im

我有一个AWS Lambda函数(Python3.8),其中我试图使用SQLAlchemy连接到RDS代理。我已经确认,通过使用PyMySQL直接连接到代理,函数配置将允许这样做。当我运行该函数时,会收到一条错误消息“(pymysql.err.InternalError)(3159,‘此RDS代理需要TLS连接’)\n(此错误的背景信息:)”。该错误的“背景”与TLS无关。我理解我需要做什么(告诉SQLAlchemy使用SSL/TLS进行连接),但我无法理解这样做的语法。下面是我当前的代码

import pymysql
import sqlalchemy

from database_info import make_connection_str

print('connecting to database')
CONN_STR = make_connection_str()
ENGINE = sqlalchemy.create_engine(CONN_STR)
METADATA = sqlalchemy.MetaData(ENGINE)
TABLE = sqlalchemy.Table('active_prospect', METADATA, autoload=True) #error comes with this line
我尝试过的事情与以下几点有关

  • 根据
    ssl mode=REQUIRED,需要使用
  • pymysql.connect(…ssl={“true”:true})
基于这两件事,我以两种不同的方式尝试了(ssl模式,ssl)=('true','required')的每一种组合

  • CONN_STR+=”?ssl模式=必需“
  • create_引擎(CONN_STR,connect_args={'ssl':'True'})

结果各不相同。在某些情况下,上面的错误已被替换为
AttributeError:“str”对象没有属性“get”
,仍然从同一行引发。

当我尝试使用来自lambda的RDS代理连接到RDS时,遇到了相同的问题。修好

  • 在lambda配置中,您将看到“数据库代理”一节。转到“添加数据库代理”并在此处添加代理。基本上,它将修改lambda的IAM角色以连接到代理
  • 在lambda代码中,我只是将主机替换为代理端点(它在没有SSL参数的情况下工作)

  • 您是如何指定连接应该使用TLS的?