After installation, run this:
aws lambda add-layer-version-permission --layer-name ChromeHeadless --statement-id xaccount --action lambda:GetLayerVersion --principal "*" --version-number X --output text
from selenium.webdriver import Chrome | |
from selenium.webdriver.chrome.options import Options | |
options = Options() | |
options.binary_location = '/opt/headless-chromium' | |
options.add_argument('--headless') | |
options.add_argument('--no-sandbox') | |
options.add_argument('--start-maximized') | |
options.add_argument('--start-fullscreen') | |
options.add_argument('--single-process') | |
options.add_argument('--disable-dev-shm-usage') | |
driver = Chrome('/opt/chromedriver', options=options) |
#!/bin/bash | |
REGION=eu-central-1 | |
RUNTIME=python3.7 | |
BUCKET=sillium-layers-miscellaneous | |
SELENIUM_VER=3.141.0 | |
CHROME_BINARY_VER=v1.0.0-55 # based on Chromium 69.0.3497.81 | |
CHROMEDRIVER_VER=2.43 # supports Chrome v69-71 | |
OUT_DIR=/out/build/chrome_headless/python/lib/$RUNTIME/site-packages | |
docker run -v $(pwd):/out -it lambci/lambda:build-$RUNTIME \ | |
pip install selenium==$SELENIUM_VER -t $OUT_DIR | |
cp chrome_headless.py build/chrome_headless/python/chrome_headless.py | |
pushd build/chrome_headless | |
DRIVER_URL=https://chromedriver.storage.googleapis.com/$CHROMEDRIVER_VER/chromedriver_linux64.zip | |
curl -SL $DRIVER_URL >chromedriver.zip | |
unzip chromedriver.zip | |
rm chromedriver.zip | |
# download chrome binary | |
CHROME_URL=https://github.com/adieuadieu/serverless-chrome/releases/download/$CHROME_BINARY_VER/stable-headless-chromium-amazonlinux-2017-03.zip | |
curl -SL $CHROME_URL >headless-chromium.zip | |
unzip headless-chromium.zip | |
rm headless-chromium.zip | |
zip -r ../../chrome_headless.zip * | |
popd | |
aws s3 cp chrome_headless.zip s3://$BUCKET/chrome_headless.zip | |
aws lambda publish-layer-version \ | |
--layer-name ChromeHeadless \ | |
--region $REGION \ | |
--content S3Bucket=$BUCKET,S3Key=chrome_headless.zip \ | |
--compatible-runtimes $RUNTIME | |
rm -rf build *.zip |
from chrome_headless import driver | |
def lambda_handler(event, context): | |
driver.get(event['url']) | |
return driver.page_source |