Conectar-se ao cluster de banco de dados usando a autenticação do IAM e o AWS SDK para .NET
Você pode se conectar a um cluster de banco de dados Aurora MySQL ou Aurora PostgreSQL com a AWS SDK para .NET, conforme descrito a seguir.
Pré-requisitos
Veja a seguir os pré-requisitos para se conectar ao cluster de banco de dados usando a autenticação do IAM:
Exemplos
O exemplo de código a seguir mostra como gerar um token de autenticação e usá-lo para se conectar a um cluster de banco de dados.
Para executar esse exemplo de código, você precisa do AWS SDK para .NETAWSSDK.CORE e AWSSDK.RDS são necessários. Para se conectar a um cluster de banco de dados, use o conector de banco de dados .NET para o mecanismo de banco de dados, como MySqlConnector para MariaDB ou MySQL ou Npgsql para PostgreSQL.
Esse código se conecta a um cluster de banco de dados Aurora MySQL. Modifique os valores das seguintes variáveis, conforme necessário:
-
server: o endpoint do cluster de banco de dados que você deseja acessar -
user: a conta de banco de dados que você deseja acessar -
database: o banco de dados que você deseja acessar -
port: o número da porta usada para se conectar ao cluster de banco de dados -
SslMode: o modo SSL a ser usadoQuando você usa
SslMode=Required, a conexão SSL verifica o endpoint do cluster de banco de dados em relação ao endpoint no certificado SSL. -
SslCa: o caminho completo para o certificado SSL do Amazon AuroraPara baixar um certificado, consulte Usar SSL/TLS para criptografar uma conexão com um cluster de banco de dados.
nota
Não é possível usar um registro DNS personalizado do Route 53 ou um endpoint personalizado do Aurora em vez do endpoint do cluster de banco de dados para gerar o token de autenticação.
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, "mysqlcluster.cluster-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=mysqlcluster.cluster-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(); } } }
Esse código se conecta a um cluster de banco de dados Aurora PostgreSQL.
Modifique os valores das seguintes variáveis, conforme necessário:
-
Server: o endpoint do cluster de banco de dados que você deseja acessar -
User ID: a conta de banco de dados que você deseja acessar -
Database: o banco de dados que você deseja acessar -
Port: o número da porta usada para se conectar ao cluster de banco de dados -
SSL Mode: o modo SSL a ser usadoQuando você usa
SSL Mode=Required, a conexão SSL verifica o endpoint do cluster de banco de dados em relação ao endpoint no certificado SSL. -
Root Certificate: o caminho completo para o certificado SSL do Amazon AuroraPara baixar um certificado, consulte Usar SSL/TLS para criptografar uma conexão com um cluster de banco de dados.
nota
Não é possível usar um registro DNS personalizado do Route 53 ou um endpoint personalizado do Aurora em vez do endpoint do cluster de banco de dados para gerar o token de autenticação.
using System; using Npgsql; using Amazon.RDS.Util; namespace ConsoleApp1 { class Program { static void Main(string[] args) { var pwd = RDSAuthTokenGenerator.GenerateAuthToken("postgresmycluster.cluster-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=postgresmycluster.cluster-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(); } } }
Se você quiser se conectar a um cluster de banco de dados por meio de um proxy, consulte Conectar-se a um proxy usando autenticação do IAM.