🙆

ECSで立てたWebアプリのコンテナへアクセスできなかったトラブルシューティング

2021/12/15に公開

ECSでコンテナたてて、Route53・Load balancerを通してコンテナへアクセスするネットワークを構築したのですが、コンテナまで到達できなかったので備忘録。

この手の設定系はたくさんあるのでそこはいろいろググって頂けると良いのですが、今回はどうやってトラブルシューティングしたかを記載します。

背景

AWSアカウントAで作成していたLoad balancerやECSはCloudformationで管理されていて、AWSアカウントBでも同じ構成を実現したかった。

これらのリソースはCloudformationをAWSアカウントB用に微修正することで、実現出来ていたつもりでした(実際、ほとんどはCloudformationを使うことで実現できました)

ただし、AWSアカウントAで取得したドメインをAWSアカウントBでも利用しようとしたため、AWSアカウントAがもつmydomain.comからAWSアカウントB用にdev.mydomain.comをAWSアカウントBが使えるようにしました(実際はこのDNSサーバの権限委譲がうまくいっていなかったトラブルが発生しました)。

トラブルシューティング

作成したコンテナのドメイン(cloudmapで紐づけしている)へChromeからアクセスしたところ、DNS_PROBE_FINISHED_NXDOMAINのエラーが出ました。あれ、Route53の設定はしているはずなのにDNSエラー?と最初は疑問でした。

では、DNSが機能していないかもしれないから、直接ロードバランサーへアクセスしてみようと思いました。ロードバランサーのDNS名のところです。

すると今度は503エラーでした。この503には見覚えがあります。

実はロードバランサーの設定で、mydomain.comへのアクセスではない場合は503を返すように設定していました。

ここでは、ロードバランサーが正常に生きているかを確かめたかっただけなので、とりあえずはOKです。

ここまでで、DNSエラーっぽい、ロードバランサーは生きているっぽいということが分かったので、やはりコンテナの死活は関係なく、純粋にDNSで止まっていることがほぼ確信できました。

そこでDNSの設定をもう一度見直しました。
参考にした記事
https://dev.classmethod.jp/articles/route53-transfer-hostedzones-2021/

すると、確かにdev.mydomain.comへのDNSサーバの権限委譲の設定ができていないことが分かりました。
あとは、設定をしてアクセスを確認して完了です。

まとめ

初歩的なミスでしたが、頭の中でネットワークの流れを考えながら、どこまで到達しているかを確認して、問題に気付くことができました。
エラーメッセージをきちんと読み、1つ1つ問題の原因をつぶしていくことが大事だと改めて気付きました。

Discussion