Aurora リーダーインスタンスの昇格(フェイルオーバー) 後に S3 への接続がタイムアウトする原因を教えてください
困っている内容
これまで問題なく動作していた S3 から Aurora PostgreSQL へのデータインポート処理[1] が、リーダーインスタンスをライターへ昇格(手動フェイルオーバー) してから失敗するようになりました。
ログを確認した所、Aurora PostgreSQL から S3 への接続がタイムアウトしているようでした。
昇格以外の作業は行っておらず、ネットワーク設定なども変更していません。
Aurora PostgreSQL クラスターの構成は以下の通りです。
- DB インスタンス 4 台
- ap-northeast-1a: ライター 1 台(旧リーダー)、リーダー 1 台(旧ライター)
- ap-northeast-1c: リーダー 1 台
- ap-northeast-1d: リーダー 1 台
- DB サブネットグループ
- ap-northeast-1a: パブリックサブネット、プライベートサブネット
- ap-northeast-1c: プライベートサブネット
- ap-northeast-1d: プライベートサブネット
- ネットワーク構成
- プライベートサブネット: S3 VPC エンドポイント経由で S3 へアクセス可能
- パブリックサブネット: インターネットゲートウェイのみ(S3 VPC エンドポイントへのルートなし)
ライターへの昇格後に Aurora PostgreSQL から S3 への接続がタイムアウトするようになった原因を教えてください。
どう対処すればいいの?
ライターインスタンスが、S3 へ接続するルートがないサブネット(本ブログではパブリックサブネット) に配置されている可能性があります。
ライターインスタンスの IP アドレスを確認し、S3 へ接続できるルートが存在するサブネット(本ブログではプライベートサブネット) の IP アドレス範囲に含まれているか確認してください。[2]
DB インスタンスの IP アドレスを見つける
DB インスタンスが [利用可能] 状態に戻ったら、DB インスタンスのエンドポイントで dig を実行して、IP アドレスを見つけます。dig rds_endpoint**注:**rds_endpoint を DB インスタンスのエンドポイントに置き換えてください。
出力例:
db-RDS-instance.xxxxxxxx.us-east-1.rds.amazonaws.com. 5 IN A 172.39.5.213プライベート IP アドレスから、プライマリインスタンスが使用するサブネットを見つけることができます。
この例では次のサブネットがあります。
- サブネット 1: 172.39.5.0/24
- サブネット 2: 172.39.4.0/24
IP アドレスは 172.39.5.0/24 未満であるため、インスタンスはサブネット 1 にあります。
S3 へのルートが存在しないサブネットへ配置されていた場合には、下記手順でライターインスタンスのサブネットを移動させるようご検討ください。[3][4]
- ご希望のサブネットが存在する AZ を指定の上、リーダーインスタンスを作成する。
- 作成されたリーダーインスタンスの IP アドレスを確認し、ご希望のサブネットで起動しているか確認する。
※ご希望のサブネットで起動していない場合は、リーダーインスタンスを削除し、再度 1 からやり直します。 - 該当のリーダーインスタンスをライターに昇格します。
- ライターへの昇格完了後、旧ライターインスタンスを削除します。
なお、Aurora でリーダーインスタンスを追加する際、AZ の指定は可能ですが、サブネットの指定はできません。
そのため、サブネットグループ内で同じ AZ のサブネットが複数存在する場合、該当 AZ のどのサブネットに配置されるかは指定できません。








