IAM 認証および AWS SDK for .NET を使用した DB クラスターへの接続 - Amazon Aurora

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

次に説明するように、AWS SDK for .NET を使用して、Aurora MySQL もしくは Aurora PostgreSQL DB クラスターに接続できます。

前提条件

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

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

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

このコードで Aurora MySQL DB クラスターに接続します。必要に応じて以下の可変の値を変更します。

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

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

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

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

  • SslMode - 使用する SSL モード

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

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

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

注記

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

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

このコードで Aurora PostgreSQL DB クラスターに接続します。

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

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

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

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

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

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

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

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

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

注記

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

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

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