質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

1回答

2975閲覧

AWS Lambdaの上でseleniumを動かしたい!!

bisuko

総合スコア1

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2020/07/04 09:18

編集2020/07/04 10:17

前提・実現したいこと

AWS Lambda上でseleniumを動かしたいです。

エラーメッセージは以下に示してありますが、chromedriverとgooglechromeとの間でバージョン差異が生じていることからエラーが発生しおります。chromedriverとgooglechrome共にバージョンが83であるので、このようなエラーが生じている原因が分かりません。

開発環境については下記の補足情報に追記しております。

発生している問題・エラーメッセージ

{ "errorMessage": "Message: session not created: This version of ChromeDriver only supports Chrome version 83\n", "errorType": "SessionNotCreatedException", "stackTrace": [ " File \"/var/task/lambda_function.py\", line 14, in lambda_handler\n browser = webdriver.Chrome('/opt/chromedriver', chrome_options=options)\n", " File \"/opt/python/selenium/webdriver/chrome/webdriver.py\", line 81, in __init__\n desired_capabilities=desired_capabilities)\n", " File \"/opt/python/selenium/webdriver/remote/webdriver.py\", line 157, in __init__\n self.start_session(capabilities, browser_profile)\n", " File \"/opt/python/selenium/webdriver/remote/webdriver.py\", line 252, in start_session\n response = self.execute(Command.NEW_SESSION, parameters)\n", " File \"/opt/python/selenium/webdriver/remote/webdriver.py\", line 321, in execute\n self.error_handler.check_response(response)\n", " File \"/opt/python/selenium/webdriver/remote/errorhandler.py\", line 242, in check_response\n raise exception_class(message, screen, stacktrace)\n" ] }

該当のソースコード

from selenium import webdriver from selenium.webdriver.chrome.options import Options def lambda_handler(event, context): #headless-chromeの設定 options = Options() options.binary_location = '/opt/headless-chromium' options.add_argument('--headless') options.add_argument('--no-sandbox') options.add_argument('--single-process') options.add_argument('--disable-dev-shm-usage') #googleのトップページを呼び出す処理 browser = webdriver.Chrome('/opt/chromedriver', chrome_options=options) browser.get('https://www.google.com')

補足情報(FW/ツールのバージョンなど)

開発環境

  • python 3.7
  • selenium
  • headless-chromium

2020年7月時点で最新verの1.0.0-55を「https://github.com/adieuadieu/serverless-chrome/releases/tag/v1.0.0-55」からインストールしています。

  • ChromeDriver

以下のサイトからlinuxOSに対応したzipをインストールしています。
https://chromedriver.storage.googleapis.com/index.html?path=83.0.4103.39/

  • GoogleChrome

自分の環境のverは83.0.4103.116になります。

selenium,ChromeDriver,headless-chromiumについてはzip化したものをLambdaレイヤーとして登録しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

https://github.com/adieuadieu/serverless-chrome/releases/tag/v1.0.0-55

こちらを見たのですが、これだいぶ前のリリースの上にプレリリースのような…。
Headless-chromiumとChromeDriverの対応バージョンが合ってないのでは、と思います。
Lambdaで動かすのは自分のローカル環境のChromeではなくheadless-chromiumなので、そこのバージョンを合わせる必要があるのではと。

投稿2020/07/04 13:38

yu_1985

総合スコア7588

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bisuko

2020/07/05 13:56

根本的にlambda上でローカルのGoogleChromeが動くものだと勘違いしていました headless-chromeをgoogledriverに対応したverに変更したら無事動くことを確認しました! ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問