Skip to content

Commit 24f72b4

Browse files
committed
first commit
0 parents  commit 24f72b4

File tree

5 files changed

+79
-0
lines changed

5 files changed

+79
-0
lines changed

Dockerfile

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
FROM public.ecr.aws/lambda/python:3.7 as build
2+
RUN mkdir -p /opt/bin/ && \
3+
mkdir -p /tmp/downloads && \
4+
curl -SL https://chromedriver.storage.googleapis.com/2.37/chromedriver_linux64.zip > /tmp/downloads/chromedriver.zip && \
5+
curl -SL https://github.com/adieuadieu/serverless-chrome/releases/download/v1.0.0-37/stable-headless-chromium-amazonlinux-2017-03.zip > /tmp/downloads/headless-chromium.zip && \
6+
unzip /tmp/downloads/chromedriver.zip -d /opt/bin/ && \
7+
unzip /tmp/downloads/headless-chromium.zip -d /opt/bin/
8+
9+
FROM public.ecr.aws/lambda/python:3.7
10+
RUN mkdir -p /opt/bin && pip install selenium
11+
COPY --from=build /opt/bin/headless-chromium /opt/bin/
12+
COPY --from=build /opt/bin/chromedriver /opt/bin/
13+
COPY test.py ./
14+
CMD [ "test.handler" ]

Makefile

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# This is just my personal scripts for development
2+
3+
build:
4+
docker build -t docker-selenium-lambda .
5+
bash:
6+
docker run --rm -it --entrypoint '' docker-selenium-lambda bash
7+
run:
8+
docker run -p 7000:8080 --rm -it docker-selenium-lambda
9+
test:
10+
curl -XPOST "http://localhost:7000/2015-03-31/functions/function/invocations" -d '{}'

README.md

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# docker-selenium-lambda
2+
3+
This is minimum demo of headless chrome and selenium on container image on AWS Lambda
4+
5+
This image goes with these versions.
6+
7+
- Python 3.7
8+
- serverless-chrome v1.0.0-37
9+
- chromedriver 2.37
10+
- selenium 3.141.0 (latest)
11+
12+
### Running the demo
13+
14+
```bash
15+
$ YOUR_REGION=ap-northeast-1 # your region
16+
$ sls deploy --region $YOUR_REGION
17+
$ sls invoke -f server --region $YOUR_REGION
18+
```
19+
20+
### Contribution
21+
22+
I'm trying run latest Chrome but having difficulties. Please check out other branches and issues.

serverless.yml

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
service: docker-selenium-lambda
2+
3+
provider:
4+
name: aws
5+
stage: ${opt:stage, 'prod'}
6+
region: ${opt:region}
7+
ecr:
8+
images:
9+
test:
10+
path: ./
11+
12+
functions:
13+
server:
14+
timeout: 60
15+
memorySize: 2048
16+
image:
17+
name: test

test.py

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
from selenium import webdriver
2+
3+
4+
def handler(event=None, context=None):
5+
options = webdriver.ChromeOptions()
6+
options.binary_location = "/opt/bin/headless-chromium"
7+
options.add_argument('--headless')
8+
options.add_argument('--no-sandbox')
9+
options.add_argument("--disable-gpu")
10+
options.add_argument("--window-size=1280x1696")
11+
options.add_argument("--single-process")
12+
options.add_argument("--disable-dev-shm-usage")
13+
chrome = webdriver.Chrome("/opt/bin/chromedriver",
14+
options=options)
15+
chrome.get("https://umihi.co/")
16+
return chrome.find_element_by_xpath("//html").text

0 commit comments

Comments
 (0)