LoginSignup
2
2

More than 3 years have passed since last update.

AWS LambdaでHeadless-Chromiumを使用した時に出たエラー

Last updated at Posted at 2019-08-07

This version of ChromeDriver only supports Chrome version

image.png

ChromeDriverがサポートしていないserverless-chromeを使用している。

notes.txtに、対応するChromeDriverのversionが書いてあるので合わせる。
ChromeDriver

ChromeDriver のバージョンが 73.0.3683.20 である場合、Chrome のバージョンが73.0.3683のものに対して全て対応する(参考)
Headless-Chromeの場合は…どうなんだろう

Layersを使おうとしてUnnable to import module

image.png

Layersにアップロードすると/opt配下に展開される。公式ドキュメント
pythonの場合を例にとると、/opt/python 配下がimportの参照範囲になるので、アップロードされたzipを展開したときに
/opt/python/selenium の様になっていないと参照できず発生する。

windowsでzip圧縮して'chromedriver' executable may have wrong permissions

image.png

一番下のコメント
windowsがlinuxのファイル権限を扱えないから発生する?
解決策はlinuxでzip圧縮してLayersやS3にアップロードする。
参考:dockerでaws cliが使える環境を作る

"errorMessage": "Message: Service /tmp/bin/chromedriver unexpectedly exited. Status code was: 127\n", "errorType": "WebDriverException"

何か色々発生する条件がある様子。chromedriver_binaryをインポートすればいいとか、libconf2が足りないとか。

ローカルにlinuxの環境を作って、chromedriverを単独で実行してみると見えてくるかもしれない。

libnss3.so libX11.soが無い

chromedriver2.37 Win、headless-chromev1.0.0.37 stableの話。
chromedriverを、dockerのcentos:8イメージを使ってローカルで単独実行した時に発生。ライブラリが足りないらしい。
サードパーティのバイナリをAWS Lambdaで実行可能にするには、ソースコードをzipに固めるときに一緒に入れてしまえばよい。
もしくはLambda LayersにアップロードするだけでもOK。(参考)

どちらのsoファイルも直接ダウンロードできなかったので、yum installしてから取り出した。

yum install libnss3-dev libX11-devel

した後、

pm -ql libnss3-dev
pm -ql libX11-devel

でインストール先を探し、cpコマンドでコピーする

Check failed: InitDefaultFont(). Could not find the default font

chromedriver2.37 Win、headless-chromev1.0.0.37 stableの話。
Dockerのcentos:8で、chromedriverをローカルで単独実行した時、
chromedriverがあるフォルダに作成されたchrome_debug.logに出力されていた。
全く解決策が見えなかったが、Python3.8で実行していたAWS Lambdaを、Python3.7に変えたら正常に動いた。

番外編 <input type="time">にsend_keysしたい時は"HH:MM AM"みたいにする

DockerでローカルにLambda環境を作って動作確認をしたときは、

<input type="time" id="start">
driver.find_element_by_id('start').send_keys('13:00')

で入力が可能であるが、本番AWS Lambdaでこのコードを実行すると値が設定されない。

driver.find_element_by_id('start').send_keys('13:00 PM')

とすると入力できる。
参考:一番下のコメント

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2