繁体   English   中英

如何在 AWS Lambda 中安装 chrome

[英]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-lambdaPuppeteer

正如 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM