如何在AWS Lambda中安装Chrome?我知道我可能需要EC2实例中的特定文件,但我不知道如何检索它。
不能重复,因为微型实例ec2与lambda不会具有相同的环境
答案 0 :(得分:0)
您可以使用已编译的Google Chrome创建Lambda图层。有模拟Lambda执行环境的docker容器,例如“ lambci / lambda:java8”。可能很棘手,因为您可能需要自己从源代码构建浏览器,而可能会丢失许多依赖项。
您是否尝试过寻找其他人的解决方案?例如,此存储库似乎已经使用Google Chrome Google Chrome for AWS Lambda as a layer
编译了Lambda Layer答案 1 :(得分:0)
正如 AWS Lambda 最近宣布的(2020 年)容器镜像支持,您可以为您的 Java 代码带来自己的运行时。
示例 Docker 映像可能如下所示:
System.out.println("The result is: " + compIn.compute(10f, 5f));
将此 Docker 映像推送到 ECR 后,您可以创建一个使用您的映像的 Lambda 函数。
但是,我仍然无法启动 Chrome 89(已经尝试了无数的 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"]
参数组合)......
ChromeOptions
也许将来有人会在这方面取得更大的成功,可以将其用作模板:D
答案 2 :(得分:-1)
在这种情况下,您应该放弃对Java的要求。不是你的朋友。
如果仅为此Lambda切换到Node.js,并使用alixaxel/chrome-aws-lambda和Puppeteer。