对于 Postgre Cloudsql,我们必须使用 google cloud-sql-python-connector 来连接到数据库。当我们使用 IAM 用户建立连接时,如果我们将标志
enable_iam_auth
传递为 true ,则无需传递任何密码。我通过查看该连接器的源代码确认了这一点,密码是可选的(第 58 行here)
但是,对于 AlloyDB,我们必须使用 AlloyDB-python-connector,当我没有为 IAM 用户传递任何密码时,会导致错误。这可以从源代码中确认,其中密码不是可选的(第 50 行here)。我尝试将密码设置为空白字符串或无,但它不起作用。我还尝试设置标志 enable_iam_auth
但我收到错误,它是无效参数。
该错误是因为 Alloy-db-connector 在弹出密码时未指定任何默认值。我们还有其他方法可以将此连接器与 AlloyDB 一起使用吗?
这是因为AlloyDB Python Connector 目前不支持自动 IAM 数据库身份验证功能。目前正在制作中,将于近期发布。有一个“开放功能请求”作为此功能的公开跟踪错误。 但是,您实际上可以配置/连接您自己的 SQLAlchemy 引擎,以通过一些非常少的代码使用 IAM 身份验证进行连接。
我们有一个
示例,使用此方法与 psycopg2直接连接,而不使用 AlloyDB Python 连接器。 可以找到在 AlloyDB 实例上启用 IAM 数据库身份验证的其他步骤
https://cloud.google.com/alloydb/docs/manage-iam-authn[ ] 通过
alloydb.iam_authentication
Cloud AlloyDB Client
Cloud AlloyDB Database User
角色[ ] 在您的 AlloyDB 集群上创建 AlloyDB IAM 数据库用户postgres