環境
CircleCI2
aws-cli 2.0.30
ハマるまでの経緯
いろいろあってCircleCIのバージョン2を使ってデプロイスクリプトを書かなければならなくなりました。
今まではバージョン2.1でorbsというとっても便利なものを使っていたので、aws-cliのバージョンやaws-cliのコマンドそのものについて意識していませんでした。
で、awsコマンドで以下を実行しようとしたら、
aws ecs register-task-definition --family ${ENV_PREFIX}-app --cli-input-json file://app-task.json --region ap-northeast-1
[Errno 2] No such file or directory: 'less': 'less'
Exited with code exit status 255
CircleCI received exit code 255
No such file??? 思わずlessでファイル検索してgrepもしましたが何も引っかからず。
lessってあのlessか?と思って、
sudo apt-get install less
して同じコマンド叩くと、
{
タスク定義の中身
}
:
え、lessしてるwwwwwwww
いや草はやしとる場合やないやんけ。
原因と解決方法
まず解決方法から。
dockerのイメージ指定してるところで環境変数を設定してあげる。
docker:
- image: circleci/python:2.7-jessie
environment:
AWS_PAGER: "" // 何も指定しないことが大事
原因はaws-cli2系の仕様で、1系の時は実行結果を出力しないのがデフォルトだったのが、2系になって実行結果が出力されるのがデフォルトになっていたため。
ただ、エラー文言が No such file or directory: 'less': 'less'なので、CLI2系に詳しくないと結構ハマるんじゃないかなと思います。 だって本来ならcommand not found出るのが正解じゃない????
orbsに甘えてたら1日はまったよ、という久しぶり投稿でした。
参考
公式
AWS_PAGER