煙と消えるその前に

一服してるうちに忘れる、自分のための備忘録。とかとか

AWS ALBのルーティングに認証を入れたら500エラーになった時

Webアプリを開発しているとき、ステージング環境を作ることって多いと思う。
で、ステージングは外部からアクセスされたくないので何かしら制限をかける。
昔はnginx/apacheで認証してみたり、クライアント証明書を作って配布したり、アクセス元IPでフィルタしていたのだけど・・・
今だとAWS ALB + Amazon Cognitoで楽に実現できる!

Application Load Balancer 組み込み認証によりログインを簡略化 | Amazon Web Services ブログ

何これ、超簡単。
しかもマネコンから操作できるし、小規模開発なら無料枠で十分収まる。

意気揚々と設定して、実際に動かしてみたらログイン画面出ましたわー
f:id:paty_fakename:20190130140513p:plain

Cognitoで作成したユーザでログインしてみると・・・
f:id:paty_fakename:20190130140600p:plain

?!?!
なんてこと・・・。
フロントエンドすらログが出ていない。
ALBのログを取ってみたところ、ここで止まってらしい。

さて困ったとドキュメントを漁ってみたら、やっぱりありますよね
Application Load Balancer のトラブルシューティング - Elastic Load Balancing

いくつかケースが書いてあるけど、おそらくALBが外部と通信できていない様子。
VPCにはinternet gatewayとルーティングを設定していたけど、SecurityGroupのアウトバウンド設定が漏れていた。
ElasticBeanstalkで生成したデフォなやつを使っていたせいで、443のルーティング設定が不十分だったのが原因。
とても単純な話なんだけど、マネコンぽちぽちで500エラーに遭遇すると面食らうなー。