Open2
Taskfileで対話的な処理を走らせるときにtaskがinterruptを捕えてしまう問題
taskにはCtrl-Cを押したときにtaskがinterruptをインターセプトして、3回interruptがあるとタスクを強制終了する仕様がある。それゆえに、例えば、以下の例に示すようなセッションマネージャーでEC2インスタンスに接続するタスクをTaskfileに定義すると、普通にCtrl-Cを使いたくても3回Ctrl-Cを打った時点で接続が強制的に切断されてしまう。
タスクの例
ssm-hoge:
silent: true
interactive: true
cmds:
- aws ssm start-session --target i-xxxxxxxxxxxxx
タスクの実行例
$ task ssm-hoge
Starting session with SessionId: xxxxxxxxxxxxxxxxxxxxxxxx
[ec2-user@hoge ~]$ task: Signal received: "interrupt"
^C
[ec2-user@hoge ~]$ task: Signal received: "interrupt"
^C
[ec2-user@hoge ~]$ task: Signal received for the third time: "interrupt". Forcing shutdown
^C
[ec2-user@hoge ~]$ $
解決策として、bash -i -c "<コマンド>"
とすると良い。
対策版のタスク
ssm-hoge:
silent: true
interactive: true
cmds:
- bash -i -c "aws ssm start-session --target i-xxxxxxxxxxxxx"