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 para .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 para .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.