从Lambda中运行的dotnet核心代码到MySQL的AWS IAM身份验证

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

我有一个用dotnet core 2.1编写的lambda函数。此代码使用Oracle MySql提供程序(v8.0.19)。一个MySQL RDS(v5.7.26)正在与一个配置为使用AWSAuthenticationPlugin的用户一起运行,如下面链接的AWS文章所述。

我能够使用普通的用户名/密码组合连接到此RDS,但我想改用IAM身份验证。本文介绍如何在Linux服务器上使用mysql客户端执行此操作:https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.html

我已经创建了IAM策略,并且能够通过RDSAuthTokenGenerator.GenerateAuthToken在lambda函数中加载令牌。连接字符串的构建如下:

MySqlConnection c = new MySqlConnection();
MySqlConnectionStringBuilder csb = new MySqlConnectionStringBuilder();
csb.Server = "dbinstanceName.xxx.us-xxx-1.rds.amazonaws.com";
csb.Port = 3306;
csb.Database = "Database";
csb.UserID = "DatabaseUserName";
csb.Password = RDSAuthTokenGenerator.GenerateAuthToken("dbinstanceName.xxx.us-xxx-1.rds.amazonaws.com", 3306, "DatabaseUserName");
csb.SslMode = MySqlSslMode.VerifyFull;
c.ConnectionString = csb.ConnectionString;

当我将此令牌作为连接字符串中的password值传递时,出现异常:

“ errorType”:“ MySqlException”,“ errorMessage”:“任何可用插件都不支持身份验证方法'mysql_clear_password'。”

此MySQL文章介绍了客户端明文可插拔身份验证(https://dev.mysql.com/doc/refman/5.7/en/cleartext-pluggable-authentication.html,但是我不知道如何在dotnet的MySQL提供程序中启用此插件。

[有人可以建议一种在dotnet核心中以明文形式在连接字符串中发送此RDS令牌的方法吗?我似乎无法弄清楚该如何完成。

mysql amazon-web-services .net-core aws-lambda connection-string
1个回答
0
投票

我能够使用其他MySQL提供程序来完成这项工作。如果遇到问题,请尝试使用MySqlConnector提供程序:

https://mysqlconnector.net/

有了这个提供程序,我不必更改上面的代码/连接字符串。

希望这对其他人有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.