У меня есть лямбда-функция, написанная на do tnet core 2.1. В этом коде используется поставщик Oracle MySql (v8.0.19). MySQL RDS (v5.7.26) запущен с пользователем, настроенным на использование AWSAuthenticationPlugin, как описано в статье AWS, приведенной ниже.
Я могу подключиться к этому RDS, используя обычное имя пользователя / пароль, но вместо этого я хочу использовать аутентификацию IAM. В этой статье описывается, как сделать это с помощью клиента mysql на сервере linux: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.html
Я создал политику IAM и могу загрузить токен в лямбда-функции через RDSAuthTokenGenerator.GenerateAuthToken. Строка подключения строится следующим образом:
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;
Когда я передаю этот токен в качестве значения пароля в строке подключения, я получаю исключение:
"errorType": «MySqlException», «errorMessage»: «Метод аутентификации« mysql_clear_password »не поддерживается ни одним из доступных плагинов».
В этой статье MySQL описывается аутентификация с использованием открытого текста на стороне клиента (https://dev.mysql.com/doc/refman/5.7/en/cleartext-pluggable-authentication.html), однако я не знаю, как включить этот плагин в MySQL провайдере в do tnet.
Может кто-нибудь предложить способ отправить этот токен RDS в строке подключения открытым текстом в ядре do tnet? Я не могу понять, как это делается.