pymysql 和 RDS IAM 用户

问题描述 投票:0回答:1

有人能够使用 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。这绝对不能作为密码使用。

amazon-rds pymysql
1个回答
0
投票

我终于成功了,还有

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,
    }
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.