Amazon RDS DB インスタンスに接続する際の問題を解決するにはどうすればよいですか?

最終更新日: 2020 年 3 月 23 日

Amazon Relational Database Service (Amazon RDS) DB インスタンスに接続できません。接続できないのはなぜですか? また、どのように修正すればよいですか?

簡単な説明

Amazon RDS DB インスタンスに接続できない原因は、多くの要因が考えられます。最も一般的な理由をいくつか次に示します。

  • RDS DB インスタンスが利用可能な状態でないため、接続を受け付けません。
  • インスタンスへの接続に使用するソースが、セキュリティグループ、ネットワークアクセスコントロールリスト (ACL)、またはローカルファイアウォールの RDS DB インスタンスへのアクセスが許可されているソースにありません。
  • DB インスタンスへの接続に誤った DNS 名またはエンドポイントが使用されています。
  • マルチ AZ インスタンスがフェイルオーバーされ、セカンダリインスタンスがインバウンド接続を許可しないサブネットまたはルートテーブルを使用しています。
  • ユーザー認証が正しくありません。

ヒント: 次のトラブルシューティングの手順を使って、接続の問題の原因を特定できます。または、AWSSupport-TroubleshootConnectivityToRDS の AWS Systems Manager Automation ドキュメントを使用して、問題を診断することもできます。このオートメーションドキュメントでは、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのプライマリ IP アドレスに基づいてネットワーク ACL を診断できますが、一時ポートは検証されません。オートメーションドキュメントでは、EC2 インスタンスのプライマリ IP アドレスに基づいてセキュリティグループも確認されますが、特定のポートは確認しません。詳細については、「シンプルな自動化ワークフローを実行する」をご参照ください。

解決方法

インスタンスが利用可能な状態であることを確認します。

DB インスタンスを最近開始または再開した場合は、Amazon RDS コンソールでインスタンスが 利用可能の状態であることを確認します。DB インスタンスのサイズによっては、インスタンスがネットワーク接続に使用できるようになるまでに、最大 20 分かかることがあります。

インスタンスが失敗の状態の場合には、「Amazon RDS DB インスタンスが失敗した状態になっているのはなぜですか?」をご参照ください。

DB インスタンスで接続が許可されていることを確認する

DB インスタンスに接続しているソースからのトラフィックが、次の 1 つ以上によってゲートされていないことを確認します。

DNS 名またはエンドポイントの問題のトラブルシューティング

DB インスタンスに接続するときは、Amazon RDS コンソールが提供する DNS 名(エンドポイント)を使用します。正しいエンドポイントを使用し、DB インスタンスへの接続に使用するクライアントに正しい形式でエンドポイントを提供していることを確認します。DB エンジン接続チュートリアルのリストには、さまざまなクライアントアプリケーションでエンドポイントを見つけて適切に使用する方法が記載されています。詳細については、「Amazon RDS の使用開始」を参照してください。

VPC の Amazon EC2 インスタンスから DB インスタンスのエンドポイントへの nslookup を実行します。

nslookup myexampledb.xxxx.us-east-1.rds.amazonaws.com 
Server: xx.xx.xx.xx 
Address: xx.xx.xx.xx#53

権威のない回答の以下の例を参照してください。

Name: myexampledb.xxxx.us-east-1.rds.amazonaws.com 
Address: 172.31.xx.x"

マルチ AZ 配置に関連付けられたルートテーブルを確認する

マルチ AZ 配置を作成するときは、異なるアベイラビリティーゾーンで複数のレプリカ DB インスタンスを開始して、アプリケーションの耐障害性を向上させます。各インスタンスに関連付けられているサブネットが、同じまたは同様のルートテーブルに関連付けられていることを確認します。そうではない場合、プライマリインスタンスがスタンバイレプリカにフェイルオーバーし、かつスタンバイレプリカが別のルートテーブルに関連付けられているとき、以前に DB インスタンスにルーティングされていたトラフィックが正しくルーティングされなくなる可能性があります。

ルートテーブルの設定方法の詳細については、「ルートテーブル」をご参照ください。マルチ AZ 配置の詳細については、「Amazon RDS での高可用性 (マルチ AZ)」をご参照ください。

注意: DB インスタンスに接続できるが、認証エラーが発生する場合は、「Amazon RDS DB インスタンスのマスターユーザーパスワードをリセットする方法」を参照してください。

接続をテストする

次のいずれかのコマンドを実行して、接続を確認します。

telnet <RDS endpoint> <port number>
nc <RDS endpoint> <port number>

telnet または nc コマンドのいずれかが成功すると、ネットワーク接続が確立され、データベースへのユーザー認証 (ユーザー名やパスワードなど) が原因で問題が発生している可能性があります。