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}
が実行される認識だったので、どちらを使用するかで結果は変わらないと思っていました。