Django を AWS ECS(FARGATE) + ELB で動かすときの ALLOWED_HOSTS の設定
めちゃくちゃ苦戦したのでメモ。
困ったこと
Django のアプリを ECS(FARGATE) 上で動かすと Invalid HTTP_HOST header: '10.0.X.Y'. You may need to add '10.0.X.Y' to ALLOWED_HOSTS.
みたいなエラーが出て、 ELB のヘルスチェックで落ちる。
だからといって、 ALLOWED_HOSTS = ['*']
みたいにするのはセキュリティ的にも気持ち的にもやりたくない。
解決策
Stack overflow に同じ問題にぶち当たっている人がいた。
通常の ALLOWED_HOSTS
の設定の下に、以下を追加すれば良いみたい。
try: resp = requests.get('http://169.254.170.2/v2/metadata') data = resp.json() container_meta = data['Containers'][0] EC2_PRIVATE_IP = container_meta['Networks'][0]['IPv4Addresses'][0] ALLOWED_HOSTS.append(EC2_PRIVATE_IP) except requests.exceptions.RequestException: pass
これで当該のエラーが出なくなって、タスクが再起動されまくる悪夢から解放されました!