如何解决AWS:使用IAM作为身份验证方法从Lambda Java脚本连接到Aurora
我一直在遵循本教程[1]来使用IAM身份验证从Lambda JavaScript函数连接到Aurora RDS集群。我能够获得身份验证令牌,但无法使用令牌来获得与数据库的连接。另外,我按照这些说明[2]从CLI获取身份验证令牌,然后使用该令牌连接“ mysql”命令工具。从命令行来看,一切都很好,这种情况告诉我我已经正确执行了[1]中的所有步骤。
我被困住了。尽管我可以从lambda获取身份验证令牌,但不能使用它来连接数据库。我的lambda是用Java脚本编写的,而我正在使用的mysql驱动程序是[3]。该驱动程序似乎与IAM身份验证不兼容。这就是我认为的原因:
-
[1]中的
-
,有一个Python示例,其中使用了mysql驱动程序。在示例中,说明要求使用
auth_plugin="mysql_clear_password"
和我正在使用的[3]驱动程序,从文档中,我找不到映射到“ auth_plugin”的选项。距离更近的是一个名为PLUGIN_AUTH的标志,但是[3]的文档说:
Uses the plugin authentication mechanism when connecting to the MySQL server. This feature is not currently supported by the Node.js implementation so cannot be turned on. (Default off)
似乎Node不支持此功能。
这是我的一部分代码:
const mysql = require('mysql');
var config = {
host : theHost,user : theUser,password : token,--------> token previously generated
database : theDataBase
auth_plugin: "mysql_clear_password",--------> this option is not really part of driver [3],I was just trying
something out
ssl: {
ca: '/var/task/rds-combined-ca-bundle.pem' ----------> cert downloaded from [4]
}
};
var connection = mysql.createConnection(config);
我得到的错误是:
ERROR error connecting: Error: unable to get local issuer certificate
我检查了“ /var/task/rds-combined-ca-bundle.pem”的存在。它是我功能的zip软件包的一部分。
如果我从连接对象中删除“ ssl”键,则会得到:
error connecting: Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol
requested by server; consider upgrading MySQL client
在AWS文档中,我找不到从JavaScript中实现的Lambda函数使用IAM身份验证的好示例。所以,我的问题是:
- 如果有的话,您能否提供一个用Java脚本实现的Lambda函数示例,该函数如何使用IAM身份验证连接到Aurora?
- 您是否知道真正的[3]是否不支持IAM身份验证?
- 是否还有其他与IAM身份验证真正兼容的mysql驱动程序?
谢谢!
参考:
[2] https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.html
[3] https://www.npmjs.com/package/mysql
[4] https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。