[chrome-aws-lambda]文字化けする時の簡単な解決方法

LambdaでPuppeteerを実行する時によく使うモジュールの一つがchrome-aws-lambdaですね。
これを使っている時に文字化けする場合の原因と解決方法を書きます。

原因

このモジュールはLambdaの50mb制限を回避するためにPuppeteerから色々なものを削ぎ落として構成されています。
そして削ぎ落とされたものの一つにFontもあります。
つまり、文字化けの原因は必要なFontがないため、その文字が表示できないので文字化けになります。

解決方法

例えば、日本語が文字化けした場合は下記を試してみてください。

const chromium = require('chrome-aws-lambda');
...
await chromium.font('https://raw.githack.com/minoryorg/Noto-Sans-CJK-JP/master/fonts/NotoSansCJKjp-Medium.ttf');

サブセット済みのFontを設置する一例です。
ここで利用したNotoSansCJKjp-Medium.ttfについて、もしくは他のFontについては下記のURLを見てみてください。
https://github.com/minoryorg/Noto-Sans-CJK-JP/

公式ページ

https://github.com/alixaxel/chrome-aws-lambda#fonts