unbufferでAmazon ECS Execを端末以外から実行する

検索で引っかかるように書いておきます。

ECS Exec (ecspresso exec, ecsta exec, aws ecs execute-commandなど)を端末以外の環境 (例えばJenkinsやGitHub ActionsなどのCI/CD環境) から実行すると、session-manager-pluginが "Cannot perform start session: EOF" でエラーになります。

これは session-manager-plugin が端末(tty)を割り当てられていることを期待しているためです。

expect パッケージに含まれる unbuffer コマンドでwrapして実行して疑似端末を与えると、端末以外からも実行できるようになります。

$ unbuffer aws ecs excute-command ...

github.com