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

最終更新日: 2020 年 12 月 21 日

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

簡単な説明

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

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

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

解決方法

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

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

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

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

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

  • DB インスタンスに関連付けられた Amazon Virtual Private Cloud (Amazon VPC) セキュリティグループ。 必要に応じて、DB インスタンスに出入りするソースに関連するトラフィックを許可する VPC に関連付けられたセキュリティグループにルールを追加します。IP アドレス、IP アドレスの範囲、または別の VPC セキュリティグループを指定できます。VPC および DB インスタンスの一般的な情報については、VPC 内の DB インスタンスにアクセスするためのシナリオをご参照ください。
  • DB インスタンスに関連付けられた任意の DB セキュリティグループ。 DB インスタンスが VPC 内にない場合、そのインスタンスは DB セキュリティグループを使用してトラフィックをゲートしている可能性があります。DB セキュリティグループを更新して、IP アドレス範囲、Amazon EC2 セキュリティグループ、または接続に使用する EC2 Classic インスタンスからのトラフィックを許可します。
  • VPC 外部の接続。DB インスタンスがパブリックにアクセス可能であり、DB インスタンスがパブリックサブネットに関連付けられている (例えば、ルートテーブルではインターネットゲートウェイからのアクセスを許可します) ことを確認します。詳細については、VPC 内の DB インスタンスにアクセスするためのシナリオをご参照ください。
  • ネットワーク ACL。 ネットワーク ACL は、VPC 内の特定のサブネット内のリソースのファイアウォールとして機能します。VPC で ACL を使用する場合は、DB インスタンスとの間で送受信されるインバウンドおよびアウトバウンドトラフィックを許可するルールがあることを確認してください。
  • ネットワークまたはローカルのファイアウォール。 ネットワーク管理者に問い合わせて、DB インスタンスがインバウンドおよびアウトバウンド通信に使用するポートとの間のトラフィックがネットワークで許可されているかどうかを確認します。
    : Amazon RDS では、ping を含むインターネットコントロールメッセージプロトコル (ICMP) トラフィックは受け入れられません。

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 インスタンスに関連付けられているサブネットが、同じまたは同様のルートテーブルに関連付けられていることを確認します。そうではない場合、プライマリ DB インスタンスがスタンバイレプリカにフェイルオーバーし、かつスタンバイレプリカが別のルートテーブルに関連付けられているとき、以前に DB インスタンスにルーティングされていたトラフィックが正しくルーティングされなくなる可能性があります。

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

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

接続を確認する

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

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

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