[英]How to install chrome inside AWS Lambda
如何在 AWS Lambda 中安装 Chrome? 我知道我可能需要来自 EC2 实例的特定文件,但我不知道如何检索它。
不作为微实例复制 ec2 与 lambda 的环境不同
您可以使用已编译的 Google Chrome 创建 Lambda 层。 有模拟 Lambda 执行环境的 docker 容器,例如“lambci/lambda:java8”。 可能很棘手,因为您需要自己从源代码构建浏览器,而可能缺少许多依赖项。
您是否尝试过查看其他人的解决方案? 例如,这个 repo 似乎有一个已经编译的 Lambda 层与 Google Chrome Google Chrome for AWS Lambda 作为层
在这种情况下,您应该放弃对 Java 的要求。 这不是你的朋友。
切换到 Node.js,如果仅用于此 Lambda,并使用alixaxel/chrome-aws-lambda和Puppeteer 。
正如 AWS Lambda 最近宣布的 (2020) 容器映像支持,您可以为您的 Java 代码带来自己的运行时。
示例 Docker 图像可能如下所示:
FROM public.ecr.aws/lambda/java:11
RUN yum install -y wget unzip libX11
RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm && \
yum install -y google-chrome-stable_current_x86_64.rpm
RUN CHROME_DRIVER_VERSION=`curl -sS https://chromedriver.storage.googleapis.com/LATEST_RELEASE` && \
wget -O /tmp/chromedriver.zip https://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip && \
unzip /tmp/chromedriver.zip chromedriver -d /usr/local/bin/
COPY target/dependency ${LAMBDA_TASK_ROOT}/lib/
COPY target/classes ${LAMBDA_TASK_ROOT}
CMD ["de.rieckpil.test.InvokeWebDriver::handleRequest"]
将此 Docker 映像推送到 ECR 后,您可以创建使用您的映像的 Lambda function。
但是,我仍然无法启动 Chrome 89(已经尝试了无数的ChromeOptions
arguments 组合)......
/usr/bin/google-chrome: line 45: /dev/fd/62: No such file or directory
/usr/bin/google-chrome: line 46: /dev/fd/62: No such file or directory
也许将来有人会在这方面取得更大的成功,并且可以将其用作模板:D
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.