Conexión la instancia de base de datos mediante la autenticación de IAM y el AWS SDK for .NET - Amazon Relational Database Service

Conexión la instancia de base de datos mediante la autenticación de IAM y el AWS SDK for .NET

Puede conectarse a una instancia de base de datos de RDS for MariaDB, MySQL o PostgreSQL con el AWS SDK for .NET como se describe a continuación.

Requisitos previos

A continuación, se muestran requisitos previos para conectarse al de instancia de base de datos mediante la autenticación de IAM:

Ejemplos

En los siguientes ejemplos de código, se muestra cómo se genera un token de autenticación y cómo se utiliza para conectarse a una instancia.

Para ejecutar este ejemplo de código, necesita AWS SDK for .NET, que se encuentra en el sitio de AWS. Los paquetes AWSSDK.CORE y AWSSDK.RDS son necesarios. Para conectarse a una instancia de base de datos, use el conector de base de datos .NET para el motor de base de datos, como MySqlConnector para MariaDB o MySQL, o Npgsql para PostgreSQL.

Este código se conecta a una instancia de base de datos de MariaDB o MySQL. Modifique los valores de las siguientes variables según sea necesario:

  • server: el punto de enlace de la instancia que desea acceder

  • user: la cuenta de base de datos a la que desea acceder.

  • database: la base de datos a la que desea obtener acceso.

  • port: el número de puerto que se utiliza para conectarse a la instancia.

  • SslMode: el modo de SSL que se debe utilizar.

    Cuando se utiliza SslMode=Required, la conexión SSL verifica el punto de conexión de la instancia con respecto al punto de enlace del certificado SSL.

  • SslCa: la ruta completa al certificado SSL de Amazon RDS

    Para descargar un certificado, consulte Uso de SSL/TLS para cifrar una conexión a una instancia o clúster de base de datos.

nota

No puede utilizar un registro DNS personalizado de Route 53 en lugar del punto de conexión de la instancia de base de datos para generar el token de autenticación.

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(); } } }

Este código se conecta a una instancia de base de datos de PostgreSQL.

Modifique los valores de las siguientes variables según sea necesario:

  • Server: el punto de enlace de la instancia que desea acceder

  • User ID: la cuenta de base de datos a la que desea acceder.

  • Database: la base de datos a la que desea obtener acceso.

  • Port: el número de puerto que se utiliza para conectarse a la instancia.

  • SSL Mode: el modo de SSL que se debe utilizar.

    Cuando se utiliza SSL Mode=Required, la conexión SSL verifica el punto de conexión de la instancia con respecto al punto de enlace del certificado SSL.

  • Root Certificate: la ruta completa al certificado SSL de Amazon RDS

    Para descargar un certificado, consulte Uso de SSL/TLS para cifrar una conexión a una instancia o clúster de base de datos.

nota

No puede utilizar un registro DNS personalizado de Route 53 en lugar del punto de conexión de la instancia de base de datos para generar el token de autenticación.

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(); } } }

Si desea conectarse a una instancia de base de datos a través de un proxy, consulte Conexión a un proxy mediante autenticación de IAM.