IAM 인증 및 AWS SDK for .NET를 사용하여 DB 인스턴스에 연결
아래 설명과 같이 AWS SDK for .NET를 사용하여 RDS for MariaDB, MySQL 또는 PostgreSQL DB 인스턴스에 연결할 수 있습니다.
필수 조건
다음은 IAM 인증을 사용하여 DB 인스턴스에 연결하기 위한 사전 조건입니다.
예시
다음 코드 예제는 인증 토큰을 생성한 다음 이 토큰을 사용하여 DB 인스턴스에 연결하는 방법을 보여줍니다.
이 코드 예제를 실행하려면 AWS SDK for .NETAWSSDK.CORE
및 AWSSDK.RDS
패키지가 필요합니다. DB 인스턴스에 연결하려면 DB 엔진용 .NET 데이터베이스 커넥터(예: MariaDB 또는 MySQL용 MySQL커넥터 또는 PostgreSQL용 Npgsql)를 사용합니다.
이 코드는 MariaDB 또는 MySQL DB 인스턴스에 연결됩니다. 필요하다면 다음 변수 값을 변경합니다.
-
server
- 액세스할 DB 인스턴스의 엔드포인트입니다. -
user
– 액세스할 데이터베이스 계정입니다. -
database
– 액세스할 데이터베이스입니다. -
port
– DB 인스턴스에 연결할 때 사용할 포트 번호입니다. -
SslMode
– 사용할 SSL 모드입니다.SslMode=Required
을 사용하면 SSL 연결에서 SSL 인증서의 엔드포인트와 비교하여 DB 인스턴스 엔드포인트를 확인합니다. -
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 연결에서 SSL 인증서의 엔드포인트와 비교하여 DB 인스턴스 엔드포인트를 확인합니다. -
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 인증을 사용하여 프록시에 연결을 참조하세요.