AWS Batchを使ってchromeをheadlessモードで起動して、色々自動化していると/dev/shm
の 64M
しか無いことが原因で処理が途中で止まってしまうことがあります。
その際出力されるエラーは、次のようなエラーです。エラーがない場合もあったりしますが。
2017-10-12T02:53:01.183Z (node:1) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Page crashed!
docker run
を使用する場合は--shm-size
オプションを指定することによって、解決できますが、AWS Batchではdocker run
時のオプションを指定することができません。
この問題、ホストの/dev/shm
をコンテナにマウントすることで解決できます。
しかし、AWSの管理コンソールの表現がちょっとした罠だったので、手順をメモしておきます。(←たぶん改善されると思いますが)
手順
- Create a job definition画面を開く
- VolumesのNameに
dev_shm
, Source pathに/dev/shm
を指定 - Mount pointsのContainer pathに
/dev/shm
, Source pathにdev_shm
を指定 - Read-onlyのチェックを外す
私はMount pointsのSource pathのpath
という表現に影響されて/dev/shm
と指定していて、しばらくハマりました。