AWS Pagerに気をつけろ 〜 awscli v2 & CICD 〜

少し前に正式リリースされたAWS CLI v2は、デフォルトでページャを設定してくれる。 そのため、シェルパイプラインで less コマンドをかまさなくても自動で less コマンドのようなページャが起動される。

f:id:yo_aibou:20200430144258p:plain

一見便利そうに見えるが、一点だけハマりポイントがある。 実行者が人間ではなく機械、つまりCI/CDやプロビジョニングツール環境下における利用だ。

画面内で結果が出力されるような場合(数行程度)は問題ないと思われるものの、数十行以上出力される更新系APIも存在する。 以下の画像は、CircleCI上で aws ecs update-service コマンドを叩いたときの様子だ。 (所属組織のリソースが含まれているため、ARN等はマスキングしている

f:id:yo_aibou:20200430144805p:plain

画像の様に Too long with no output というエラー文と共に10分タイムアウトで落ちている。 パイプしたlessコマンドを q で片付けない状態が10分続いた、というわけだ。

これの解消方法は簡単で、AWSコマンドを叩く際に環境変数 AWS_PAGER を空文字列で指定するとよい。 CircleCIでも、わずか2行追加するだけで解消する。 (余計なコメントが入っているが、気にしないでほしい)

f:id:yo_aibou:20200430145036p:plain