View a markdown version of this page

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 証明書のエンドポイントと照合します。

  • SslCa - Amazon 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 Certificate - Amazon 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 認証を使用したデータベースへの接続」を参照してください。