您可以使用 AWS SDK for .NET 连接到 RRDS for MariaDB、MySQL 或 PostgreSQL 数据库实例 ,如下所述。
先决条件
以下是使用 IAM 身份验证连接到数据库实例的先决条件:
示例
以下代码示例演示如何生成身份验证令牌,然后使用该令牌连接到数据库实例。
要运行该代码示例,您需要使用 AWS SDK for .NET 网站上提供的 AWSAWSSDK.CORE
和 AWSSDK.RDS
程序包是必需的。要连接到数据库实例,请使用用于数据库引擎的 .NET 数据库连接器,例如 MySqlConnector for MariaDB 或 MySQL,或 Npgsql for PostgreSQL。
此代码连接到 MariaDB 或 MySQL 数据库实例。根据需要修改以下变量的值:
-
server
– 要访问的数据库实例的终端节点。 -
user
– 要访问的数据库账户 -
database
– 要访问的数据库 -
port
– 用于连接到数据库实例的端口号 -
SslMode
– 要使用的 SSL 模式当您使用
SslMode=Required
时,SSL 连接将针对 SSL 证书中的终端节点验证数据库实例终端节点。 -
SslCa
– Amazon 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 Certificate
– Amazon 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 身份验证连接到代理。