Pit*_*tos 10 lambda google-chrome chromium
是否可以在带有容器的 AWS Lambda 中使用 puppeteer 运行 Google-chrome 而不是 Chromium?
\n当我在浏览器中创建新页面时脚本卡住:
\nconst page = await browser.newPage();\nRun Code Online (Sandbox Code Playgroud)\n来自 AWS lambda 的日志:
\nmkdir: cannot create directory \xe2\x80\x98/.local\xe2\x80\x99: Read-only file system\ntouch: cannot touch \xe2\x80\x98/.local/share/applications/mimeapps.list\xe2\x80\x99: No such file or directory\n/usr/bin/google-chrome-stable: line 45: /dev/fd/62: No such file or directory\n/usr/bin/google-chrome-stable: line 46: /dev/fd/62: No such file or directory\n[0213/000419.523205:ERROR:bus.cc(397)] Failed to connect to the bus: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory\n[0213/000419.528197:ERROR:bus.cc(397)] Failed to connect to the bus: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory\n[0213/000419.648505:WARNING:audio_manager_linux.cc(60)] Falling back to ALSA for audio output. PulseAudio is not available or could not be initialized.\nDevTools listening on ws://127.0.0.1:46195/devtools/browser/1d348770-1c99-48a5-934c-fae5254fc766\n[0213/000419.769218:WARNING:bluez_dbus_manager.cc(248)] Floss manager not present, cannot set Floss enable/disable.\nprctl(PR_SET_NO_NEW_PRIVS) failed\nprctl(PR_SET_NO_NEW_PRIVS) failed\nRun Code Online (Sandbox Code Playgroud)\n
我不使用木偶师,但这并不重要。
FROM public.ecr.aws/lambda/provided:al2
RUN yum install unzip atk at-spi2-atk gtk3 cups-libs pango libdrm \
libXcomposite libXcursor libXdamage libXext libXtst libXt \
libXrandr libXScrnSaver alsa-lib \
xorg-x11-server-Xvfb wget shadow-utils -y
COPY install-chrome.sh /tmp/
RUN /usr/bin/bash /tmp/install-chrome.sh
ENV DBUS_SESSION_BUS_ADDRESS="/dev/null"
Run Code Online (Sandbox Code Playgroud)
我并不是100% DBUS_SESSION_BUS_ADDRESS 是必要的。我也不是 100% 确定是否有必要显式命名所有这些包,我从十几个不同的地方偷了所有东西,可能 chrome rpm 会引入它需要的东西,但我从未使用过任何基于 RHEL 的系统,所以我完全一无所知。我知道这有效。欢迎优化。
这是脚本:
#!/usr/bin/bash
# Download and install chrome
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
# Without -y it doesn't run because it needs to add dependencies.
yum install -y google-chrome-stable_current_x86_64.rpm
rm google-chrome-stable_current_x86_64.rpm
CHROMEVERSION=`wget -qO- https://chromedriver.storage.googleapis.com/LATEST_RELEASE`
wget --no-verbose -O /tmp/chromedriver_linux64.zip https://chromedriver.storage.googleapis.com/$CHROMEVERSION/chromedriver_linux64.zip
unzip /tmp/chromedriver_linux64.zip -d /opt
rm /tmp/chromedriver_linux64.zip
mv /opt/chromedriver /opt/chromedriver-$CHROMEVERSION
chmod 755 /opt/chromedriver-$CHROMEVERSION
ln -fs /opt/chromedriver-$CHROMEVERSION /usr/local/bin/chromedriver
# Create a user. /usr/sbin is not on $PATH.
/usr/sbin/groupadd --system chrome
/usr/sbin/useradd --system --create-home --gid chrome --groups audio,video chrome
Run Code Online (Sandbox Code Playgroud)
您可以通过在本地启动它来验证它是否正常工作,docker run --mount type=tmpfs,destination=/tmp --read-only这很好地模拟了 AWS Lambda 的环境。然后你需要运行su chrome -c 'xvfb-run chromedriver --allowed-ips=127.0.0.1'。我正在使用https://github.com/instaclick/php-webdriver/这是一个非常瘦的 W3C 和 Selenium 2 webdriver PHP 客户端。我用这个来测试:
FROM public.ecr.aws/lambda/provided:al2
RUN yum install unzip atk at-spi2-atk gtk3 cups-libs pango libdrm \
libXcomposite libXcursor libXdamage libXext libXtst libXt \
libXrandr libXScrnSaver alsa-lib \
xorg-x11-server-Xvfb wget shadow-utils -y
COPY install-chrome.sh /tmp/
RUN /usr/bin/bash /tmp/install-chrome.sh
ENV DBUS_SESSION_BUS_ADDRESS="/dev/null"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3052 次 |
| 最近记录: |