AWS
batch
docker

AWS Batchのコンテナの /dev/shm のサイズを拡張する方法

AWS Batchを使ってchromeをheadlessモードで起動して、色々自動化していると/dev/shm64Mしか無いことが原因で処理が途中で止まってしまうことがあります。

その際出力されるエラーは、次のようなエラーです。エラーがない場合もあったりしますが。

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のチェックを外す

create_job_definitions.png

私はMount pointsのSource pathのpathという表現に影響されて/dev/shmと指定していて、しばらくハマりました。