Traffine I/O

日本語

2022-12-02

ECSのタスク起動時のexec format errorというエラーの解決法

ECSのタスク起動時にexec format errorというエラーが発生する

ローカルで環境でFastAPIのDockerイメージを作成してECRにプッシュし、ECSのタスクを起動すると、コンテナが立ち上がらないという問題に遭遇しました。

ログを確認すると以下のようなエラーが表示されていました。

exec /usr/local/bin/uvicorn: exec format error

ECS console

この記事では、exec format errorの解決方法を紹介します。

原因:M1/M2チップ

このエラーは、Dockerをビルドするマシンと実行するマシンのCPUアーキテクチャが異なると発生するようです。私のPCはM2チップのMacなので、実行環境であるECS FargateのマシンのCPUのアーキテクチャと異なっていたために発生していたということになります。

解決方法

Dockerのビルドの際に--platform amd64というパラメータを付与すると解決します。

bash
$ docker build --platform amd64 .

参考

https://axcoto.com/notes/2021-03-13-docker-apple-m-nginx-and-standard-init-linux-go-exec-user-process-caused-exec-format-error-/

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!