

# Amazon RDS DB インスタンスへの接続
<a name="CHAP_CommonTasks.Connect"></a>

 DB インスタンスに接続する前に、DB インスタンスを作成する必要があります。詳細については、「[Amazon RDS DB インスタンスの作成](USER_CreateDBInstance.md)」を参照してください。Amazon RDS によって DB インスタンスがプロビジョニングされたら、標準のクライアントアプリケーションまたは DB エンジン用のユーティリティを使用して DB インスタンスに接続します。接続文字列では、DB インスタンスのエンドポイントの DNS アドレスをホストパラメータとして指定します。また、ポートパラメータとして、DB インスタンスのエンドポイントのポート番号を指定します。

Amazon RDS DB インスタンスの接続情報の検索、または VPC 内の DB インスタンスにアクセスするためのシナリオの詳細については、次のトピックを参照してください。
+ [Amazon RDS DB インスタンスの接続情報の検索](CHAP_CommonTasks.Connect.EndpointAndPort.md)
+ [VPC の DB インスタンスにアクセスするシナリオ](CHAP_CommonTasks.Connect.ScenariosForAccess.md)

# Amazon RDS DB インスタンスの接続情報の検索
<a name="CHAP_CommonTasks.Connect.EndpointAndPort"></a>

DB インスタンスの接続情報には、エンドポイント、ポート、およびマスターユーザーなどの有効なデータベースユーザーが含まれます。例えば、MySQL DB インスタンスの場合、エンドポイントの値が `mydb.123456789012.us-east-1.rds.amazonaws.com` であるとします。この場合、ポート値は `3306` であり、データベースユーザーは `admin` です。この情報を考慮して、接続文字列に次の値を指定します。
+ ホスト、ホスト名または DNS 名には、`mydb.123456789012.us-east-1.rds.amazonaws.com` を指定します。
+ ポートで、`3306` を指定します。
+ ユーザーには、`admin` を指定します。

エンドポイントは DB インスタンスごとに一意であり、ポートとユーザーの値はさまざまです。次のリストは、各 DB エンジンの最も一般的なポートを示しています。
+ Db2 – 50000
+ MariaDB – 3306
+ Microsoft SQL Server – 1433
+ MySQL – 3306
+ Oracle – 1521
+ PostgreSQL – 5432

DB インスタンスに接続するには、DB エンジンの任意のクライアントを使用します。例えば、mysql ユーティリティを使用して MariaDB または MySQL DB インスタンスに接続できます。Microsoft SQL Server Management Studio を使用して、SQL Server の DB インスタンスに接続できます。Oracle SQL Developer を使用して Oracle DB インスタンスに接続したりできます。同様に、psql コマンドラインユーティリティを使用して、PostgreSQL DB インスタンスに接続できます。

DB インスタンスの接続情報を探すには、AWS マネジメントコンソール を使用します。また、AWS Command Line Interface (AWS CLI) [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) コマンドまたは RDS API [DescribeDBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstances.html) オペレーションを使用することもできます。

## コンソール
<a name="CHAP_CommonTasks.Connect.EndpointAndPort.Console"></a>

**AWS マネジメントコンソール で DB インスタンスの接続情報を探すには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**データベース**] を選択して DB インスタンスのリストを表示します。

1. DB インスタンスの名前を選択して、その詳細を表示します。

1. [**接続とセキュリティ**] タブで、エンドポイントをコピーします。また、ポート番号を書き留めます。DB インスタンスに接続するには、エンドポイントとポート番号の両方が必要です。  
![\[DB インスタンスのエンドポイントとポート\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/endpoint-port.png)

1. マスターユーザー名を見つける必要がある場合は、[**設定**] タブを選択し、[**マスターユーザー名**] の値を表示します。

## AWS CLI
<a name="CHAP_CommonTasks.Connect.EndpointAndPort.CLI"></a>

AWS CLI を使用して DB インスタンスの接続情報を検索するには、[describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) コマンドを呼び出します。呼び出しで、DB インスタンス ID、エンドポイント、ポート、マスターユーザー名をクエリします。

Linux、macOS、Unix の場合:

```
aws rds describe-db-instances \
  --query "*[].[DBInstanceIdentifier,Endpoint.Address,Endpoint.Port,MasterUsername]"
```

Windows の場合:

```
aws rds describe-db-instances ^
  --query "*[].[DBInstanceIdentifier,Endpoint.Address,Endpoint.Port,MasterUsername]"
```

出力は次のようになります。

```
[
    [
        "mydb",
        "mydb.123456789012.us-east-1.rds.amazonaws.com",
        3306,
        "admin"
    ],
    [
        "myoracledb",
        "myoracledb.123456789012.us-east-1.rds.amazonaws.com",
        1521,
        "dbadmin"
    ],
    [
        "mypostgresqldb",
        "mypostgresqldb.123456789012.us-east-1.rds.amazonaws.com",
        5432,
        "postgresadmin"
    ]
]
```

## RDS API
<a name="CHAP_CommonTasks.Connect.EndpointAndPort.API"></a>

Amazon RDS API を使用して DB インスタンスの接続情報を検索するには、[DescribeDBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstances.html) オペレーションを呼び出します。出力で、エンドポイントアドレス、エンドポイントポート、およびマスターユーザー名の値を検索します。

# VPC の DB インスタンスにアクセスするシナリオ
<a name="CHAP_CommonTasks.Connect.ScenariosForAccess"></a>

Amazon Virtual Private Cloud (Amazon VPC) を使用すると、Amazon RDS DB インスタンスなどの AWS リソースを仮想プライベートクラウド (VPC) で起動できます。Amazon VPC を使用する場合、仮想ネットワーキング環境を制御できます。独自の IP アドレスの範囲を選択し、サブネットを作成してルーティングおよびアクセスコントロールリストを設定できます。

VPC セキュリティグループは、VPC 内の DB インスタンスへのアクセスを制御します。VPC セキュリティグループの各ルールにより、その VPC セキュリティグループに関連付けられている VPC 内の DB インスタンスへのアクセスを特定のソースに許可できます。ソースとしては、アドレスの範囲 (203.0.113.0/24 など) または別の VPC セキュリティグループを指定できます。VPC セキュリティグループをソースとして指定すると、ソース VPC セキュリティグループを使用するすべてのインスタンス (通常はアプリケーションサーバー) からの受信トラフィックを許可することになります。

DB インスタンスに接続する前に、お客様のユースケース用に VPC を設定します。以下は、VPC の DB インスタンスにアクセスするための以下の一般的なシナリオです。
+ **同じ VPC 内の Amazon EC2 インスタンスからアクセスする VPC 内の DB インスタンス** – VPC 内の DB インスタンスの一般的な用途は、同じ VPC 内の EC2 インスタンスで実行されるアプリケーションサーバーとデータを共有することです。EC2 インスタンスは、DB インスタンスと対話するアプリケーションでウェブサーバーを実行することがあります。
+ **別の VPC 内の EC2 インスタンスからアクセスする VPC 内の DB インスタンス** – DB インスタンスが、アクセスに使用している EC2 インスタンスとは別の VPC にある場合もあります。その場合は、VPC ピアリングを使用して DB インスタンスにアクセスできます。
+ **インターネットを介してクライアントアプリケーションからアクセスする VPC 内の DB インスタンス** – インターネット経由でクライアントアプリケーションから VPC 内の DB インスタンスにアクセスするには、1 つのパブリックサブネットを持つ VPC を設定します。また、インターネット経由の通信を有効にするために、インターネットゲートウェイを設定します。

  VPC の外部から DB インスタンスに接続するには、DB インスタンスがパブリックにアクセスできる必要があります。また、DB インスタンスのセキュリティグループのインバウンドルールを使用してアクセスを許可し、その他の要件を満たしている必要があります。詳細については、「[Amazon RDS DB インスタンスに接続できない](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting)」を参照してください。
+ **プライベートネットワークからアクセスされる VPC 内の DB インスタンス** - DB インスタンスにパブリックにアクセスできない場合は、次のいずれかのオプションを使用してプライベートネットワークからアクセスできます。
  + AWS サイト間 VPN 接続
  + Direct Connect 接続
  + AWS Client VPN 接続

詳細については、「[VPC の DB インスタンスにアクセスするシナリオ](USER_VPC.Scenarios.md)」を参照してください。

## AWS ドライバーを使用した DB インスタンスへの接続
<a name="RDS.Connecting.Drivers"></a>

AWS のドライバースイートは、スイッチオーバーとフェイルオーバーの時間の短縮、AWS Secrets Manager、AWS Identity and Access Management (IAM)、フェデレーティッド ID での認証をサポートするように設計されています。AWS ドライバーは、DB インスタンスステータスをモニタリングし、インスタンストポロジを認識して新しいプライマリインスタンスを決定することを前提としています。このアプローチにより、スイッチオーバーとフェイルオーバーの時間が 1 桁秒に短縮されます (オープンソースドライバーの場合は数十秒)。

次の表は、各ドライバーでサポートされている機能を示しています。新しいサービス機能が導入されるにあたって、こうしたサービス機能を標準でサポートすることが AWS のドライバースイートの目標です。


| 機能 | [AWS JDBC ドライバー](https://github.com/awslabs/aws-advanced-jdbc-wrapper) | [AWS Python ドライバー](https://github.com/awslabs/aws-advanced-python-wrapper) | [AWS MySQL 用 ODBC ドライバー](https://github.com/aws/aws-mysql-odbc) | 
| --- | --- | --- | --- | 
| フェイルオーバーのサポート | [あり](https://github.com/awslabs/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/using-plugins/UsingTheFailoverPlugin.md) | [あり](https://github.com/awslabs/aws-advanced-python-wrapper/blob/main/docs/using-the-python-driver/using-plugins/UsingTheFailoverPlugin.md) | [はい](https://github.com/aws/aws-mysql-odbc/blob/main/docs/using-the-aws-driver/UsingTheAwsDriver.md#failover-process) | 
| フェイルオーバーモニタリングの強化 | [あり](https://github.com/awslabs/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/using-plugins/UsingTheHostMonitoringPlugin.md) | [あり](https://github.com/awslabs/aws-advanced-python-wrapper/blob/main/docs/using-the-python-driver/using-plugins/UsingTheHostMonitoringPlugin.md) | [はい](https://github.com/aws/aws-mysql-odbc/blob/main/docs/using-the-aws-driver/HostMonitoring.md#enhanced-failure-monitoring) | 
| 読み取り/書き込みの分割 | [あり](https://github.com/awslabs/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/using-plugins/UsingTheReadWriteSplittingPlugin.md) | [はい](https://github.com/awslabs/aws-advanced-python-wrapper/blob/main/docs/using-the-python-driver/using-plugins/UsingTheReadWriteSplittingPlugin.md) | なし | 
| ドライバーメタデータ接続 | [はい](https://github.com/awslabs/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/using-plugins/UsingTheDriverMetadataConnectionPlugin.md) | 該当なし | 該当なし | 
| Telemetry | [あり](https://github.com/awslabs/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/Telemetry.md) | [はい](https://github.com/aws/aws-advanced-python-wrapper/blob/main/docs/using-the-python-driver/Telemetry.md) | なし | 
| Secrets Manager | [あり](https://github.com/awslabs/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/using-plugins/UsingTheAwsSecretsManagerPlugin.md) | [あり](https://github.com/awslabs/aws-advanced-python-wrapper/blob/main/docs/using-the-python-driver/using-plugins/UsingTheAwsSecretsManagerPlugin.md) | [はい](https://github.com/aws/aws-mysql-odbc/blob/main/docs/using-the-aws-driver/UsingTheAwsDriver.md#secrets-manager-authentication) | 
| IAM 認証 | [あり](https://github.com/awslabs/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/using-plugins/UsingTheIamAuthenticationPlugin.md) | [あり](https://github.com/awslabs/aws-advanced-python-wrapper/blob/main/docs/using-the-python-driver/using-plugins/UsingTheIamAuthenticationPlugin.md) | [はい](https://github.com/aws/aws-mysql-odbc/blob/main/docs/using-the-aws-driver/UsingTheAwsDriver.md#iam-authentication) | 
| フェデレーティッド ID (AD FS) | [あり](https://github.com/awslabs/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/using-plugins/UsingTheFederatedAuthPlugin.md) | [はい](https://github.com/awslabs/aws-advanced-python-wrapper/blob/main/docs/using-the-python-driver/using-plugins/UsingTheFederatedAuthenticationPlugin.md) | なし | 
| フェデレーティッド ID (Okta) | [はい](https://github.com/awslabs/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/using-plugins/UsingTheFederatedAuthPlugin.md) | なし | いいえ | 
| マルチ AZ DB クラスター | [あり](https://github.com/awslabs/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/SupportForRDSMultiAzDBCluster.md) | [はい](https://github.com/aws/aws-advanced-python-wrapper/blob/main/docs/using-the-python-driver/SupportForRDSMultiAzDBCluster.md) | なし | 

AWS ドライバーの詳細については、使用している [RDS for MariaDB](MariaDB.Connecting.Drivers.md#MariaDB.Connecting.JDBCDriver)、[RDS for MySQL](MySQL.Connecting.Drivers.md#MySQL.Connecting.JDBCDriver)、または [RDS for PostgreSQL](PostgreSQL.Connecting.JDBCDriver.md) DB インスタンスに対応する言語ドライバーを参照してください。

**注記**  
RDS for MariaDB でサポートされている機能は、AWS Secrets Manager、AWS Identity and Access Management (IAM)、およびフェデレーティッド ID による認証のみです。

## 特定の DB エンジンを実行している DB インスタンスに接続する
<a name="CHAP_CommonTasks.Connect.DBEngine"></a>

特定の DB エンジンを実行している DB インスタンスへの接続方法については、DB エンジンの指示に従ってください。
+ [RDS for Db2](USER_ConnectToDb2DBInstance.md)
+ [RDS for MariaDB](USER_ConnectToMariaDBInstance.md)
+ [RDS for SQL Server](USER_ConnectToMicrosoftSQLServerInstance.md)
+ [RDS for MySQL](USER_ConnectToInstance.md)
+ [RDS for Oracle](USER_ConnectToOracleInstance.md)
+ [RDS for PostgreSQL](USER_ConnectToPostgreSQLInstance.md)

## RDS Proxy による接続の管理
<a name="CHAP_CommonTasks.Connect.RDSProxy"></a>

Amazon RDS Proxy を使用して、RDS for MariaDB、RDS for Microsoft SQL Server、RDS for MySQL、および RDS for PostgreSQL DB インスタンスへの接続を管理することもできます。RDS Proxy を使用すると、アプリケーションでデータベース接続をプールおよび共有し、スケーラビリティを向上させることができます。詳細については、「[Amazon RDS Proxy ](rds-proxy.md)」を参照してください。

## データベース認証オプション
<a name="CHAP_CommonTasks.Connect.DatabaseAuthentication"></a>

Amazon RDS では、データベースユーザーを認証する次の方法がサポートされています。
+ **パスワード認証** – DB インスタンスがユーザーアカウントのすべての管理を行います。SQL 文でユーザーを作成し、パスワードを指定します。使用できる SQL 文は、DB エンジンによって異なります。
+ **AWS Identity and Access Management (IAM) データベース認証** – DB インスタンスに接続する際にパスワードを使用する必要はありません。代わりに、認証トークンを使用します。
+ **Kerberos 認証** – Kerberos および Microsoft Active Directory を使用して、データベースユーザーの外部認証を使用します。Kerberos は、ネットワーク経由でパスワードを送信する必要をなくすためにチケットと対称キー暗号化を使用するネットワーク認証プロトコルです。Kerberos は Active Directory に組み込まれており、データベースなどのネットワークリソースに対するユーザー認証を行えるように設計されています。

IAM データベース認証と Kerberos 認証は、特定の DB エンジンおよびバージョンでのみ使用できます。

詳細については、「[Amazon RDS でのデータベース認証](database-authentication.md)」を参照してください。

## 暗号化された接続
<a name="CHAP_CommonTasks.Connect.EncryptedConnections"></a>

アプリケーションの Secure Socket Layer (SSL) または Transport Layer Security (TLS) を使用して、DB インスタンスへの接続を暗号化できます。各 DB エンジンには SSL/TLS を実装する独自のプロセスがあります。詳細については、「[SSL/TLS を使用した DB インスタンスまたはクラスターへの接続の暗号化](UsingWithRDS.SSL.md)」を参照してください。