IAM 認証および AWS SDK for .NET を使用した DB クラスターへの接続
次に説明するように、AWS SDK for .NET を使用して、Aurora MySQL もしくは Aurora PostgreSQL DB クラスターに接続できます。
前提条件
IAM 認証を使用して DB クラスターに接続するための前提条件は以下のとおりです。
例
以下のコード例で、認証トークンを生成し、それを使用して DB クラスターに接続する方法を示します。
このコードサンプルを実行するには、AWS SDK for .NET サイトにある AWSAWSSDK.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 証明書のエンドポイントと照合します。 -
SslCa
- Amazon 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 Certificate
- Amazon 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 認証を使用したプロキシへの接続」を参照してください。