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

最終更新日: 2020 年 8 月 14 日

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) セキュリティグループ。 必要に応じて、VPC に関連付けられたセキュリティグループに、DB インスタンスに出入りするソースに関連するトラフィックを許可するルールを追加します。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 コマンドのいずれかが成功すると、ネットワーク接続が確立され、データベースへのユーザー認証 (ユーザー名やパスワードなど) が原因で問題が発生している可能性があります。