1
0

More than 1 year has passed since last update.

【AWS Batch】エラー「exec format error」の原因と解決方法

Posted at

概要

ECRにイメージをプッシュして、AWS Batchのジョブからコマンドを実行するとexec format errorになりました。本記事ではその原因と解決方法を記載します。

エラー内容

AWS Batchのコマンドに、試しに["pwd"]をジョブに入れて実行しました。
しかし、ログを見ると以下のエラーになりました。

	exec /bin/pwd: exec format error

このエラーは、コンテナイメージが実行しようとしているバイナリまたはコマンドの実行形式が正しくない場合に発生するよう。コンテナイメージがEC2インスタンスの実行環境と互換性がないっぽい。

原因

docker inspectを実行してDockerイメージの中身を見てみる

 "Architecture": "arm64",
        "Variant": "v8",
        "Os": "linux",

"Architecture"フィールドが"arm64"であることは、コンテナイメージがARM64アーキテクチャ向けにビルドされた、ということ。

AWS Batchがデフォルトで提供するコンピューティング環境(Amazon EC2インスタンス)のアーキテクチャは、amd64(x86_64)らしい。そのため、Dockerのアーキテクチャと異なるのでエラーになっていた、というわけです。amd64アーキテクチャ向けのコンテナイメージを実行することを前提としているのです。

また、自分はMac M1チップを使ってDockerイメージをビルドしていました。M1はArmアーキテクチャのプロセッサを利用しているので、そこで不整合が起きていたのです。

解決方法

コンテナイメージもARM64アーキテクチャ向けにビルドされている必要があります。
以下でビルドしたら、上述のエラーがなくなりました。

docker build -t sample-image . --platform amd64
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0