tl; dr
- Fargate プラットフォームバージョン 1.4.0 では、コンテナで実行するコマンドの引数に空文字を渡すと無視される。
- Fargate プラットフォームバージョン 1.4.0 を使用する限り、この挙動は回避できない模様。
- 現時点で引数に空文字を使うには Fargate プラットフォームバージョン 1.3.0 を利用するしかない模様。
検証
Dockerfile
FROM alpine:3.13.2
RUN echo 'echo "\$0(script_name): $0"; \
echo "\$1(first_args): $1"; \
echo "\$2(second_args): $2"; \
echo "\$3(third_args): $3"; \
echo "\$4(4th_args): $4"; \
echo "\$5(5th_args): $5"; \
echo "\$#(number_of_args): $#"; \
echo "\"\$*\": \"$*\""; \
echo "\"\$@\": \"$@\""' > /args_test.sh
CMD ["/bin/sh", "/args_test.sh", "first", "", "third", "", "5th"]
Fargate PV 1.3.0 での実行結果
Fargate PV 1.4.0 での実行結果
どうすべきか
- LATEST が 1.4.0 に変更されるにあたって、検証を行う際はネットワーク周りの確認だけでなく、コンテナの最終的な実行結果まで確認を行った方が良さそう。
- その確認が難しいようであれば、現時点では 1.3.0 に固定するのが無難そう。
- また、タスク定義やタスク実行時の CMD 上書きでも再現するため、動的に引数を設定している様なタスクでは、さらに検証で注意が必要である。