使用 IAM 身份验证和 Amazon SDK for .NET 连接到数据库实例 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 IAM 身份验证和 Amazon SDK for .NET 连接到数据库实例

您可以使用 Amazon SDK for .NET 连接到 RRDS for MariaDB、MySQL 或 PostgreSQL 数据库实例 ,如下所述。

先决条件

以下是使用 IAM 身份验证连接到数据库实例的先决条件:

示例

以下代码示例演示如何生成身份验证令牌,然后使用该令牌连接到数据库实例

要运行该代码示例,您需要使用 Amazon SDK for .NET 网站上提供的 AmazonAWSSDK.COREAWSSDK.RDS 程序包是必需的。要连接到数据库实例,请使用用于数据库引擎的 .NET 数据库连接器,例如 MySqlConnector for MariaDB 或 MySQL,或 Npgsql for PostgreSQL。

此代码连接到 MariaDB 或 MySQL 数据库实例。根据需要修改以下变量的值:

  • server – 要访问的数据库实例的终端节点。

  • user – 要访问的数据库账户

  • database – 要访问的数据库

  • port – 用于连接到数据库实例的端口号

  • SslMode – 要使用的 SSL 模式

    当您使用 SslMode=Required 时,SSL 连接将针对 SSL 证书中的终端节点验证数据库实例终端节点。

  • SslCaAmazon RDS 的 SSL 证书的完整路径

    要下载证书,请参阅 使用 SSL/TLS 加密与数据库实例或集群的连接

注意

您不能使用自定义 Route 53 DNS 记录代替数据库实例端点来生成身份验证令牌。

using System; using System.Data; using MySql.Data; using MySql.Data.MySqlClient; using Amazon; namespace ubuntu { class Program { static void Main(string[] args) { var pwd = Amazon.RDS.Util.RDSAuthTokenGenerator.GenerateAuthToken(RegionEndpoint.USEast1, "mysqldb.123456789012.us-east-1.rds.amazonaws.com", 3306, "jane_doe"); // for debug only Console.Write("{0}\n", pwd); //this verifies the token is generated MySqlConnection conn = new MySqlConnection($"server=mysqldb.123456789012.us-east-1.rds.amazonaws.com;user=jane_doe;database=mydB;port=3306;password={pwd};SslMode=Required;SslCa=full_path_to_ssl_certificate"); conn.Open(); // Define a query MySqlCommand sampleCommand = new MySqlCommand("SHOW DATABASES;", conn); // Execute a query MySqlDataReader mysqlDataRdr = sampleCommand.ExecuteReader(); // Read all rows and output the first column in each row while (mysqlDataRdr.Read()) Console.WriteLine(mysqlDataRdr[0]); mysqlDataRdr.Close(); // Close connection conn.Close(); } } }

此代码连接到 PostgreSQL 数据库实例。

根据需要修改以下变量的值:

  • Server – 要访问的数据库实例的终端节点。

  • User ID – 要访问的数据库账户

  • Database – 要访问的数据库

  • Port – 用于连接到数据库实例的端口号

  • SSL Mode – 要使用的 SSL 模式

    当您使用 SSL Mode=Required 时,SSL 连接将针对 SSL 证书中的终端节点验证数据库实例终端节点。

  • Root CertificateAmazon RDS 的 SSL 证书的完整路径

    要下载证书,请参阅 使用 SSL/TLS 加密与数据库实例或集群的连接

注意

您不能使用自定义 Route 53 DNS 记录代替数据库实例端点来生成身份验证令牌。

using System; using Npgsql; using Amazon.RDS.Util; namespace ConsoleApp1 { class Program { static void Main(string[] args) { var pwd = RDSAuthTokenGenerator.GenerateAuthToken("postgresmydb.123456789012.us-east-1.rds.amazonaws.com", 5432, "jane_doe"); // for debug only Console.Write("{0}\n", pwd); //this verifies the token is generated NpgsqlConnection conn = new NpgsqlConnection($"Server=postgresmydb.123456789012.us-east-1.rds.amazonaws.com;User Id=jane_doe;Password={pwd};Database=mydb;SSL Mode=Require;Root Certificate=full_path_to_ssl_certificate"); conn.Open(); // Define a query NpgsqlCommand cmd = new NpgsqlCommand("select count(*) FROM pg_user", conn); // Execute a query NpgsqlDataReader dr = cmd.ExecuteReader(); // Read all rows and output the first column in each row while (dr.Read()) Console.Write("{0}\n", dr[0]); // Close connection conn.Close(); } } }

如果您想通过代理连接到数据库实例,请参阅使用 IAM 身份验证连接到代理