Conectar-se à instância de banco de dados usando a autenticação do IAM e o AWS SDK for .NET
Você pode se conectar a uma instância de banco de dados do RDS para MariaDB, RDS para MySQL ou RDS para PostgreSQL com a AWS SDK for .NET, conforme descrito a seguir.
Pré-requisitos
Veja a seguir os pré-requisitos para se conectar à instância 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 uma instância de banco de dados.
Para executar esse exemplo de código, você precisa do AWS SDK for .NETAWSSDK.CORE
e AWSSDK.RDS
são necessários. Para se conectar a uma instância 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 uma instância de banco de dados MariaDB ou MySQL. Modifique os valores das seguintes variáveis, conforme necessário:
-
server
: o endpoint da instância 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 à instância de banco de dados -
SslMode
: o modo SSL a ser usadoQuando você usa
SslMode=Required
, a conexão SSL verifica o endpoint da instância de banco de dados em relação ao endpoint no certificado SSL. -
SslCa
: o caminho completo para o certificado SSL do Amazon RDSPara baixar um certificado, consulte Usar SSL/TLS para criptografar uma conexão com uma instância ou um cluster de banco de dados.
nota
Não é possível usar um registro DNS personalizado do Route 53 em vez do endpoint da instância 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, "
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(); } } }
Esse código se conecta a uma instância de banco de dados PostgreSQL.
Modifique os valores das seguintes variáveis, conforme necessário:
-
Server
: o endpoint da instância 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 à instância de banco de dados -
SSL Mode
: o modo SSL a ser usadoQuando você usa
SSL Mode=Required
, a conexão SSL verifica o endpoint da instância de banco de dados em relação ao endpoint no certificado SSL. -
Root Certificate
: o caminho completo para o certificado SSL do Amazon RDSPara baixar um certificado, consulte Usar SSL/TLS para criptografar uma conexão com uma instância ou um cluster de banco de dados.
nota
Não é possível usar um registro DNS personalizado do Route 53 em vez do endpoint da instância 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("
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(); } } }
Se você quiser se conectar a uma instância de banco de dados por meio de um proxy, consulte Conectar-se a um proxy usando autenticação do IAM.