もりはやメモφ(・ω・ )

ITとか読書感想文とか

CodeDeployで謎のエラーがスクリプト実行時に出ると思ったらCRLFだった

タイトル通りです。以下のようなエラーをCodePiplineで呼び出してるCodeDeployから受けました。

f:id:morihaya:20211021102015p:plain
codedeploy error

Event details

Error code ScriptFailed Script name ./codedeployhooks/aftinstall.sh Message Script at specified location: ./codedeployhooks/aftinstall.sh run as user root failed with exit code 127

Logs

LifecycleEvent - AfterInstall Script - ./codedeployhooks/aftinstall.sh [stderr]/usr/bin/env: bash : No such file or directory

Code

コードの先頭は以下で、Shebangでエラーが出る理由がまったくわからずに1時間以上を消費しました。。

#!/usr/bin/env bash
# Refer: https://github.com/aws/aws-codedeploy-agent/issues/14#issuecomment-204461833

LOGFILE=/var/log/codedeploy-$(date +%Y%m).log

echo "#[$(date --iso-8601="s")] Starting AfterInstall ...." | tee -a ${LOGFILE}

...

原因

原因はファイルがCRLFだったためでした。それだけです。

WIndows使いの他の方が、コード内に含まれている日本語文言を修正した時に変化してしまったようです。 CRLFには少なくない数で煮湯を飲まされている気がするのでもっと早く気づけたらよかったですが、ブログに書くことで気持ちがおさまってきたのでヨシ。