以下のサイトにしたがって、Lambda上でseleniumを動かそうとしています。
【AWS Lambda】でseleniumを使ってスクレイピングをサーバーレスで行う~前編~
しかしこの方法をトレースすると、Lambdaのテストを実行したときに以下のエラーが出ます。(実際にはパスのエラーも出るので、コード中のパスを/opt/headless/python/bin/に変更してから実行しています。)
"errorMessage": "Message: session not created exception: Missing or invalid capabilities\n (Driver info: chromedriver=2.37.544315 (730aa6a5fdba159ac9f4c1e8cbc59bf1b5ce12b7),platform=Linux 4.14.255-273-220.498.amzn2.x86_64 x86_64)\n", "errorType": "SessionNotCreatedException", "stackTrace": [ " File \"/var/task/lambda_function.py\", line 21, in lambda_handler\n options=options\n", " File \"/opt/python/lib/python3.7/site-packages/selenium/webdriver/chrome/webdriver.py\", line 73, in __init__\n service_log_path, service, keep_alive)\n", " File \"/opt/python/lib/python3.7/site-packages/selenium/webdriver/chromium/webdriver.py\", line 98, in __init__\n options=options)\n", " File \"/opt/python/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py\", line 275, in __init__\n self.start_session(capabilities, browser_profile)\n", " File \"/opt/python/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py\", line 365, in start_session\n response = self.execute(Command.NEW_SESSION, parameters)\n", " File \"/opt/python/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py\", line 430, in execute\n self.error_handler.check_response(response)\n", " File \"/opt/python/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py\", line 247, in check_response\n raise exception_class(message, screen, stacktrace)\n" ] }
そもそも、cloud9上でheadless-chromiumとchromedriverを実行すると以下のエラーが出ます。この状態で動くほうがむしろ不思議なのですが、上記のサイトにかかれていることはデタラメなのでしょうか?どうすればLabmda上でseleniumを動作させることができるでしょうか?
ec2-user:~/environment/headless/python/bin $ ./headless-chromium --version [0508/075244.065944:WARNING:resource_bundle.cc(368)] locale_file_path.empty() for locale [0508/075244.071243:WARNING:resource_bundle.cc(368)] locale_file_path.empty() for locale [0508/075244.084949:WARNING:resource_bundle.cc(368)] locale_file_path.empty() for locale [0508/075244.094138:ERROR:gl_implementation.cc(292)] Failed to load /home/ec2-user/environment/headless/python/bin/libosmesa.so: /home/ec2-user/environment/headless/python/bin/libosmesa.so: cannot open shared object file: No such file or directory [0508/075244.252421:ERROR:viz_main_impl.cc(196)] Exiting GPU process due to errors during initialization [0508/075244.259836:ERROR:instance.cc(49)] Unable to locate service manifest for metrics [0508/075244.264044:ERROR:service_manager.cc(890)] Failed to resolve service name: metrics [0508/075244.264882:ERROR:browser_gpu_channel_host_factory.cc(121)] Failed to launch GPU process. [0508/075244.265284:ERROR:gpu_process_transport_factory.cc(1009)] Lost UI shared context. [0508/075244.268160:ERROR:service_manager_context.cc(219)] Attempting to run unsupported native service: /home/ec2-user/environment/headless/python/bin/content_gpu.service [0508/075244.270514:ERROR:instance.cc(49)] Unable to locate service manifest for metrics [0508/075244.270771:ERROR:service_manager.cc(890)] Failed to resolve service name: metrics
ec2-user:~/environment/headless/python/bin $ ./chromedriver -v ./chromedriver: error while loading shared libraries: libxcb.so.1: cannot open shared object file: No such file or directory

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。