有人能够使用 IAM 用户和 Pymysql 连接到 RDS 主机吗?
https://gist.github.com/kave/4fcdef69ae3007148190516e1e11b48d https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.Connecting.Python.html
这两个例子都是错误的或过时的。
“generate_db_auth_token”重新运行完整的 URL。这绝对不能作为密码使用。
我终于成功了,还有
sqlalchemy
!别问我花了多长时间:
DBHostname = DBCLUSTER_HOSTNAME
DBPort = DBCLUSTER_PORT
DBUsername = DBCLUSTER_USER
DBName = DBCLUSTER_NAME
engine = sqlalchemy.create_engine(
"mysql+pymysql:///"
) # connection params will be set by the event callback
@sqlalchemy.event.listens_for(engine, "do_connect")
def provide_token(dialect, conn_rec, cargs, cparams):
client = boto3.client("rds")
token = client.generate_db_auth_token(
DBHostname=DBHostname,
Port=int(DBPort),
DBUsername=DBUsername,
Region=REGION,
)
# set up db connection parameters, alternatively we can get these from boto3 describe_db_instances
cparams["host"] = DBHostname
cparams["port"] = int(DBPort)
cparams["user"] = DBUsername
cparams["password"] = token
cparams["database"] = DBName
cparams["ssl"] = {
"ca": "ssl-ca-bundle.pem",
"verify_identity": False,
}
cparams["auth_plugin_map"] = {
"mysql_clear_password": None,
}