IAM 認証および AWS SDK for .NET を使用した DB インスタンスへの接続 - Amazon Relational Database Service

IAM 認証および AWS SDK for .NET を使用した DB インスタンスへの接続

次に説明するように、AWS SDK for .NET を使用して、RDS for MariaDB、MySQL、または PostgreSQL DB インスタンスに接続できます。

前提条件

IAM 認証を使用して DB インスタンスに接続するための前提条件は以下のとおりです。

以下のコード例で、認証トークンを生成し、それを使用して DB インスタンスに接続する方法を示します。

このコードサンプルを実行するには、AWS SDK for .NET サイトにある AWS が必要です。AWSSDK.CORE および AWSSDK.RDS パッケージが必要です。DB インスタンスに接続するには、MariaDB または MySQL 用の MySqlConnector や PostgreSQL 用の Npgsql など、DB エンジン用の .NET データベースコネクタを使用します。

このコードで MariaDB インスタンスまたは MySQL DB インスタンスに接続します。必要に応じて以下の可変の値を変更します。

  • server - アクセス先の DB インスタンスのエンドポイント

  • user - アクセス先のデータベースアカウント

  • database - アクセス先のデータベース

  • port - DB インスタンスへの接続に使用するポート番号

  • SslMode - 使用する SSL モード

    SslMode=Required を使用すると、SSL 接続で DB インスタンスのエンドポイントを SSL 証明書のエンドポイントと照合します。

  • SslCaAmazon RDS のSSL 証明書へのフルパス

    証明書をダウンロードするには、「SSL/TLS を使用した DB インスタンスまたはクラスターへの接続の暗号化」を参照してください。

注記

DB インスタンスエンドポイントの代わりにカスタム Route 53 DNS レコードを使用して認証トークンを生成することはできません。

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

このコードで PostgreSQL DB インスタンスに接続します。

必要に応じて以下の可変の値を変更します。

  • Server - アクセス先の DB インスタンスのエンドポイント

  • User ID - アクセス先のデータベースアカウント

  • Database - アクセス先のデータベース

  • Port - DB インスタンスへの接続に使用するポート番号

  • SSL Mode - 使用する SSL モード

    SSL Mode=Required を使用すると、SSL 接続で DB インスタンスのエンドポイントを SSL 証明書のエンドポイントと照合します。

  • Root CertificateAmazon RDS のSSL 証明書へのフルパス

    証明書をダウンロードするには、「SSL/TLS を使用した DB インスタンスまたはクラスターへの接続の暗号化」を参照してください。

注記

DB インスタンスエンドポイントの代わりにカスタム Route 53 DNS レコードを使用して認証トークンを生成することはできません。

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

プロキシ経由で DB インスタンスに接続する場合は、「IAM 認証を使用したプロキシへの接続」を参照してください。