

# Conexión al clúster de base de datos mediante la autenticación de IAM y el AWS SDK para .NET
<a name="UsingWithRDS.IAMDBAuth.Connecting.NET"></a>

Puede conectarse a un clúster de bases de datos de Aurora MySQL o Aurora PostgreSQL con el AWS SDK para .NET como se describe a continuación.

**Requisitos previos**  
A continuación, se muestran requisitos previos para conectarse al clúster de de base de datos mediante la autenticación de IAM:
+ [Activación y desactivación de la autenticación de bases de datos de IAM](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [Creación y uso de una política de IAM para el acceso a bases de datos de IAM](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [Creación de cuentas de base de datos utilizando autenticación de IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md)

**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 un clúster de bases de datos.

Para ejecutar este ejemplo de código, necesita [AWS SDK para .NET](https://aws.amazon.com/sdk-for-net/), que se encuentra en el sitio de AWS. Los paquetes `AWSSDK.CORE` y `AWSSDK.RDS` son necesarios. Para conectarse a un clúster 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 un clúster de bases de datos de Aurora MySQL. Modifique los valores de las siguientes variables según sea necesario:
+ `server`: el punto de enlace del clúster de bases de datos 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 al clúster de bases de datos.
+ `SslMode`: el modo de SSL que se debe utilizar.

  Cuando se utiliza `SslMode=Required`, la conexión SSL verifica el punto de conexión del clúster de bases de datos con respecto al punto de enlace del certificado SSL.
+ `SslCa`: la ruta completa al certificado SSL de Amazon Aurora

  Para descargar un certificado, consulte [Uso de SSL/TLS para cifrar una conexión a un clúster de base de datos](UsingWithRDS.SSL.md).

**nota**  
No puede utilizar un registro DNS personalizado de Route 53 en lugar del punto de conexión del clúster 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, "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();
    }
  }
}
```

Este código se conecta a un clúster de bases de datos de Aurora PostgreSQL.

Modifique los valores de las siguientes variables según sea necesario:
+ `Server`: el punto de enlace del clúster de bases de datos 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 al clúster de bases de datos.
+ `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 del clúster de bases de datos con respecto al punto de enlace del certificado SSL.
+ `Root Certificate`: la ruta completa al certificado SSL de Amazon Aurora

  Para descargar un certificado, consulte [Uso de SSL/TLS para cifrar una conexión a un clúster de base de datos](UsingWithRDS.SSL.md).

**nota**  
No puede utilizar un registro DNS personalizado de Route 53 en lugar del punto de conexión del clúster 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("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();
        }
    }
}
```

Si desea conectarse a un clúster de base de datos a través de un proxy, consulte [Conexión a una base de datos mediante autenticación de IAM](rds-proxy-connecting.md#rds-proxy-connecting-iam).