この記事はQiitaに投稿されたものの転載です。


  1. serverless-chromeをダウンロードして解凍
    • 以下の chromium 64.0.3282.167 で動作確認した
    • https://github.com/adieuadieu/serverless-chrome/releases/tag/v1.0.0-37
  2. chromedriverをダウンロードして解凍
    • 以下の chromedriver_linux64.zip で動作確認した
    • https://chromedriver.storage.googleapis.com/index.html?path=2.37/
  3. 実行権限付与
    • chmod 777 <ダウンロードしたファイル>
  4. chrome フォルダにダウンロードしたファイルを入れて、zipに固める
  5. Lambdaレイヤーにzipをアップロード
  6. Lambdaレイヤーにseleniumをアップロード
    • 以下を参考のこと
    • https://qiita.com/mishimay/items/e107b685381cca0493bf
  7. Lambda関数に上記2つのレイヤーを追加
  8. 以下のようなコードで実行できる
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

def lambda_handler(event, context):
    options = Options()
    options.binary_location = '/opt/chrome/headless-chromium'
    options.add_argument('--headless')
    options.add_argument('--no-sandbox')
    options.add_argument('--single-process')
    options.add_argument('--disable-dev-shm-usage')

    browser = webdriver.Chrome('/opt/chrome/chromedriver', chrome_options=options)
    browser.get('https://www.google.com')
    title = browser.title
    browser.close()
    browser.quit()

    return {"title": title}

参考

https://blog.ikedaosushi.com/entry/2018/12/22/231421 https://qiita.com/nabehide/items/754eb7b7e9fff9a1047d

環境

macOS 10.15.4 Python 3.7.7