Amazon Aurora PostgreSQL 互換エディションデータベース (DB) クラスターに接続しようとしたときに、接続がタイムアウトするエラーをトラブルシューティングしたいと考えています。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI のエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
ネットワーク設定の問題により、Aurora PostgreSQL 互換 DB クラスターに接続するときに、接続タイムアウトエラーが発生することがよくあります。接続タイムアウトの問題を特定して解決するには、次の操作を実行してください。
データベースインスタンスのステータスを確認する
次の手順を実行します。
- Amazon Relational Database Service (Amazon RDS) コンソールを開きます。
- ナビゲーションペインで [データベース] を選択します。
- [ステータス] 列で、Aurora PostgreSQL 互換 DB インスタンスが Available 状態であることを確認します。<br id=hardline_break/>
重要: インスタンスが使用できない場合は、インスタンスが使用可能になるのを待ってからトラブルシューティングを進めてください。
セキュリティグループの設定を確認する
インバウンドルールとアウトバウンドルールの両方を確認するには、次の手順を実行します。
- Amazon Elastic Compute Cloud (Amazon EC2) コンソールを開きます。
- ナビゲーションペインで [セキュリティグループ] を選択します。
- Aurora PostgreSQL 互換 DB クラスターに関連付けられているセキュリティグループを選択します。
- [インバウンドルール] を選択します。
- クライアントの IP アドレスまたはセキュリティグループからポート 5432 またはカスタムポートへのトラフィックを許可するルールがあることを確認してください。<br id=hardline_break/>
注: [インバウンドルールを編集] を選択して、必要なトラフィックを受け入れるルールを追加または変更します。
- Amazon EC2 インスタンスから接続する場合は、[アウトバウンドルール] を選択します。
- Amazon EC2 インスタンスのセキュリティグループが、ポート 5432 で Aurora PostgreSQL 互換クラスターのセキュリティグループへのアウトバウンドトラフィックを許可していることを確認してください。<br id=hardline_break/>
注: [アウトバウンドルールを編集] を選択して、必要なトラフィックを受け入れるルールを追加または変更します。
ネットワーク ACL 設定を確認する
ネットワークアクセスコントロールリスト (ネットワーク ACL) の設定を確認するには、次の手順を実行します。
- Amazon Virtual Private Cloud (Amazon VPC) コンソールを開きます。
- ナビゲーションペインで [ネットワーク ACL] を選択します。
- Aurora PostgreSQL 互換 DB クラスターのサブネットに関連付けられているネットワーク ACL を選択します。
- [インバウンドルール] と [アウトバウンドルール] の両方を選択し、ルールによってクライアントとデータベース間のポート 5432 のトラフィックが許可されることを確認します。
ルートテーブルの設定を確認する
ルートテーブルの設定を確認するには、次の手順を実行します。
- Amazon VPC コンソールを開きます。
- ナビゲーションペインで [ルートテーブル] を選択します。
- Aurora PostgreSQL 互換 DB クラスターのサブネットに関連付けられているルートテーブルを選択します。
- 正しいターゲットを指すクラスレスドメイン間ルーティングのルートがあることを確認します。
例えば、ターゲットにはインターネットゲートウェイ、NAT ゲートウェイ、またはピアリング接続を指定できます。別の VPC またはオンプレミスネットワークから接続する場合は、必要なルートが設定されていることを確認してください。
VPC ピアリングまたはトランジットゲートウェイの設定を確認する
VPC ピアリングを介して異なる VPC から接続する場合は、次の手順を実行します。
- VPC ピアリングのプロセスに従って、VPC 間で VPC ピアリングが正しく設定されていることを確認します。
- 両方の VPC のルートテーブルをチェックして、VPC 間のトラフィックを転送するために必要なルートがあることを確認します。
- 両方の VPC のセキュリティグループが必要なトラフィックを受け入れていることを確認します。
トランジットゲートウェイを介して異なる VPC から接続する場合は、次の手順を実行します。
- 設計のベストプラクティスに従って、VPC 間でトランジットゲートウェイが正しく設定されていることを確認してください。
- すべての VPC アタッチメントのルートテーブルをチェックして、それらの間のトラフィックを転送するために必要なルートがあることを確認します。
- 両方の VPC のセキュリティグループが必要なトラフィックを受け入れていることを確認します。
DNS 解決を確認する
VPC をまたいで接続する場合は、VPC ピアリング接続の DNS 解決を有効にしていることを確認してください。
次の手順を実行します。
- Amazon VPC コンソールを開きます。
- ナビゲーションペインで、[ピアリング接続] を選択します。
- 対象のピアリング接続を選択します。
- [アクション] を選択し、[DNS 設定の編集] を選択します。
- [DNS 設定の編集] セクションで、リクエスタ VPC とアクセプタ VPC の両方の DNS 解決を許可します。
インターネットゲートウェイの IP アドレスを確認する
VPC の外部から接続しようとして、クラスターがパブリックにアクセス可能な場合は、次の手順を実行してください。
- Amazon VPC コンソールを開きます。
- ナビゲーションペインで [インターネットゲートウェイ] を選択します。
- 使用する VPC のインターネットゲートウェイを見つけ、そのインターネットゲートウェイが Attached 状態であることを確認します。
- インターネットゲートウェイの VPC ID を選択します。
- [詳細] で、[メインルートテーブル] を選択します。
- [ルート] を選択し、宛先が 0.0.0.0/0 の IP アドレスで、ターゲットのインターネットゲートウェイを指すルートがあることを確認します。
データベースインスタンスへの接続をテストする
接続をテストして、ネットワーク関連または認証関連の問題がないかどうかを確認します。接続テストが成功した場合、データベースの認証情報に問題がある可能性があります。
telnet によるネットワーク接続をテストするには、次のコマンドを実行します。
telnet CLUSTER-ENDPOINT 5432
注: CLUSTER-ENDPOINT を Aurora PostgreSQL 互換のクラスターエンドポイントに、5432 をデータベースポートに置き換えてください。PostgreSQL のデフォルトのデータベースポートは 5432 です。
Telnet が利用できない場合にネットワーク接続をテストするには、次のコマンドを実行します。
nc -zv CLUSTER-ENDPOINT 5432
注: CLUSTER-ENDPOINT を Aurora PostgreSQL 互換のクラスターエンドポイントに、5432 をデータベースポートに置き換えてください。
接続に成功した場合、セキュリティグループは正しく設定されます。
注: Amazon RDS は、ping などのインターネット制御メッセージプロトコル (ICMP) トラフィックを受け入れません。
パブリックアクセス可能な設定を確認する
VPC の外部からクラスターに接続しようとする場合、クラスターはパブリックアクセス可能である必要があります。または、踏み台ホストや AWS Direct Connect などの他の接続方法を使用することもできます。
クラスターがパブリックアクセス可能かどうかを確認するには、次の手順を実行します。
- Amazon RDS コンソールを開きます。
- ナビゲーションペインで [データベース] を選択します。
- 対象の Aurora PostgreSQL 互換クラスターを選択し、[変更] を選択します。
- [接続] セクションで、追加設定] を選択します。
- クラスターが [パブリックアクセス可能] に設定されていることを確認します。
IP アドレスの競合を確認する
ローカルネットワークと VPC CIDR 範囲の間で IP アドレスが競合していないことを確認します。競合が発生した場合は、NAT を使用するか、ネットワーク設定を調整する必要があります。
VPC の CIDR を確認するには、次の手順を実行します。
- Amazon VPC コンソールを開きます。
- ナビゲーションペインで [VPC] を選択し、ローカルネットワーク接続に使用する VPC を選択します。
- [CIDR] タブを選択し、CIDR ブロックがローカルネットワーク上の IP アドレスと重複していないことを確認します。
AWS CLI を使用して VPC CIDR を確認する
AWS CLI を使用して VPC CIDR ブロックを表示するには、次の describe-vpcs AWS CLI コマンドを実行します。
aws ec2 describe-vpcs \
--vpc-ids VPC-ID \
--region REGION
注: VPC-ID を実際の VPC ID に、REGION を AWS リージョンに置き換えてください。
関連情報
Amazon Aurora DB クラスターへの接続
セキュリティグループを使用して AWS リソースへのトラフィックを制御する
ネットワークアクセスコントロールリストを使用して、サブネットのトラフィックを制御する
サブネットルートテーブルを管理する
VPC ピア機能とは