FastAPI(Python)で実装したアプリケーションをECSにデプロイする機会があったが、詰まるところがあったの備忘録。
uvicornのオプションとして --host 0.0.0.0 を含める
–host設定についての公式ドキュメントでの記載は以下。
https://www.uvicorn.org/settings/#socket-binding
–host – Bind socket to this host. Use –host 0.0.0.0 to make the application available on your local network. IPv6 addresses are supported, for example: –host ‘::’. Default: ‘127.0.0.1’.
アーキテクチャとしては、外部からのリクエストをまずALBで受けてから、ターゲットであるECSのコンテナにルーティングする形にしています。
このためローカルネットワークから疎通できるようにしておけばポート指定で接続させられる(と思います)
uvicornの実行コマンドをtask definitionに設定する際はCMDではなくENTRYPOINTを使う
理由はわかっていませんが、uvicornコマンドが、CMDで設定してみると期待通りに動作せず、ENTRYPOINTでは動作しました。
ENTRYPOINT, CMDを設定している場合は${ENTRYPOINT} ${CMD}が実行される認識だったので、どちらを使用するかで結果は変わらないと思っていました。