CodeBuild

AWS CodeBuild でエラー standard_init_linux.go:211: exec user process caused “exec format error”

AWSを使い始めてCodeBuild & ECS を試していた際、表題のエラーに遭遇し、思いのほか時間を浪費してしまったのでメモっておきます。

スポンサーリンク

事象

ECSでコンテナをデプロイすると、AWSコンソール ECS画面の左ペイン [ クラスター ] → 当該クラスタのクリック → [ タスク ] タブの画面でステータスが RUNNING になったと思ったらすぐ STOPPED になる。そして、また別のタスクが RUNNINGSTOPPED ・・・ 以降、無限ループの状態となりました。

standard_init_linux.go:211: exec user process caused exec format errorのエラー画面


当該タスクをクリック → [ Logs ]タブを確認すると以下のようなエラーが出力されていました。

standard_init_linux.go:211: exec user process caused exec format errorのエラー画面
standard_init_linux.go:211: exec user process caused "exec format error"

原因

Dockerfileで使用していたイメージとCodeBuildで指定したビルド環境のCPUアーキテクチャが異なっていたためでした。

【Dockerfile】

今回使用したDockerファイルは以下のような内容で、httpd:2.4 はアーキテクチャが指定されてないとamd64(x86-64) でビルドされます。

FROM httpd:2.4
COPY ./index.html /usr/local/apache2/htdocs/
CMD ["httpd-foreground"]

【CodeBuild環境】

コードビルド設定のAWSコンソール画面

誤ってaarch64(arm64) を指定しており、Dockerfileのhttpdイメージと異なるアーキテクチャであったためエラーとなっていました。

対応

今回の例ではCodeBuildで amazonlinux2-x86_64 のイメージを選択すれば正常にデプロイが完了します。

なお、このエラーはentrypoint.sh に shebang(例: #!/bin/sh ) がないときも出るようです。

Tips

Codebuildではもう一つ

Step 3/3 : CMD ["httpd-foreground"]
---> Running in 0672c1e1531e
Removing intermediate container 0672c1e1531e
---> f8cd04edae75
Successfully built f8cd04edae75
Successfully tagged test-2:latest

Running command docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
"docker tag" requires exactly 2 arguments.
See 'docker tag --help'.

Usage: docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE

Command did not exit successfully docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG exit status 1
Phase complete: BUILD State: FAILED

のように “docker tag” requires exactly 2 arguments. というエラーにも遭遇しました。

公式サイトのサンプル 通りbuildspec.ymlの設定を環境変数から読み込むようにしていたのですが、(自分の場合は)AWS_ACCOUNT_ID の最後に半角スペースが入っていたためでした。。orz

先人の方々のおかげてすぐ抜け出せましたが(感謝)、自力解決だったらおそらく結構時間を浪費したとおもいます。

目視確認できないスペースが混じってる系の問題だったので。。


結局どれもこれも、慌てず正確に入力・選択しましょう!の一言に尽きますね。

参考

(*ゝω・)ノ ァリガトネー

Raspberry Pi上のDockerで動くイメージのCIでのビルド方法 – Qiita
AWS CodeBuildで失敗したときに確認するポイント – Qiita
Docker – Dockerでエラーが出る:standard_init_linux.go:207: exec user process caused “exec format error”|teratail