概要
Amazon Linux で Google Chrome を動かそうとすると、パッケージの依存関係の問題でインストールがなかなかうまくいきません。
Amazon Linux 2 の LTS 版が出たので、早速再挑戦してみました。
試した環境はこんな感じ。
$ cat /etc/system-release
Amazon Linux 2
Google Chrome をインストール
Linux 版が RPM で配布されているのでこれを使用します。
$ sudo yum -y install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
パッケージの依存関係のエラーは出ず、インストールは完了。
Headless モードで動かしてみる
スクリーンショットを撮ってみます。
$ google-chrome --headless --disable-gpu --window-size=1024,768 --hide-scrollbars --screenshot='yahoo.png' https://www.yahoo.co.jp
[0716/141244.079664:ERROR:gpu_process_transport_factory.cc(1017)] Lost UI shared context.
Fontconfig warning: "/etc/fonts/fonts.conf", line 146: blank doesn't take any effect anymore. please remove it from your fonts.conf
[0716/141245.205569:INFO:headless_shell.cc(590)] Written to file yahoo.png.
エラーは出ましたがスクリーンショットを保存した画像ファイルが生成されました。
結果
残念。
スクリーンショットは撮れましたが、日本語が出ません。
日本語フォントをインストールしてからもう一度。
$ sudo yum -y install ipa-gothic-fonts
$ google-chrome --headless --disable-gpu --window-size=1024,768 --hide-scrollbars --screenshot='yahoo.png' https://www.yahoo.co.jp
[0716/142052.156208:ERROR:gpu_process_transport_factory.cc(1017)] Lost UI shared context.
Fontconfig warning: "/etc/fonts/fonts.conf", line 146: blank doesn't take any effect anymore. please remove it from your fonts.conf
[0716/142053.271844:INFO:headless_shell.cc(590)] Written to file yahoo.png.
同じエラーが出ていますが、スクリーンショットを保存した画像ファイルが生成されました。
結果
成功🎉
発生したエラーについて
Fontconfig warning: "/etc/fonts/fonts.conf", line 146: blank doesn't take any effect anymore. please remove it from your fonts.conf
このエラーは Fontconfig
の設定ファイル( /etc/fonts/fonts.conf
)の変更で対応。
blank
タグの定義が不要になったので、<blank>
と </blank>
を消してしまうか、
<!-- <blank> -->
※この間はそのまま
<!-- </blank> -->
のようにコメントアウトで対応。
[????/??????.??????:ERROR:gpu_process_transport_factory.cc(1017)] Lost UI shared context.
このエラーは Chrome を Headless モードで実行した時に発生するらしい。対応方法については現時点では不明。Chrome のアップデートで解消されることを期待。
まとめ
Headless Chrome を使えば、Webサイトのサムネイルを作ったり、 Selenium でごにょごにょしたりといろいろできます。
Amazon Linux 2 のLTS版が出たので、これからいろいろなAWSサービスでも使えるようになるかもしれませんね。
Lambda や Fargate のようなサーバレスなサービスでも使えるようになると面白そう。