EC2インスタンスのuserdataの実行履歴を見たい - ふり返る暇なんて無いね でログを確認したところ、以下のように言われてしまった。
2023-09-21 02:01:06,809 - __init__.py[WARNING]: Unhandled non-multipart (text/x-not-multipart) userdata: 'b''...'
どうもシェバンがないのでうまくbashスクリプトとして認識してくれなかったようだ。下記1行を先頭に加えて再度起動したところうまく動いた。
#!/bin/bash
参考 起動時に Linux インスタンスでコマンドを実行する - Amazon Elastic Compute Cloud
ユーザーデータシェルスクリプトは、#! 文字と、スクリプトの読み取り先であるインタープリタのパス (通常は /bin/bash)) で開始する必要があります。シェルスクリプティングに関する有用な紹介文は、Linux ドキュメントプロジェクト (tldp.org) の「BASHプログラミングのハウツー」で入手できます。