首页 > 解决方案 > 无法使用 Bit-bucket 的管道将 Puppeteer 和 Chromium 安装到 AWS Elastic Beanstalk

问题描述

我使用 Bitbucket 的管道将 Node.js express 部署到 AWS Elastic beanstalk。

该代码包括安装Puppeteerv5.0.0 ,它在安装时会下载 Chromium。

下载 Chromium 时由于访问权限导致部署失败,见下图: ERROR: Failed to download Chromium r756035! 设置“PUPPETEER_SKIP_CHROMIUM_DOWNLOAD”环境变量以跳过下载。错误:EACCES:权限被拒绝,mkdir '/tmp/deployment/application/node_modules/puppeteer/.local-chromium'

如何设置权限以使安装成功完成?

标签: node.jsamazon-elastic-beanstalkpuppeteerbitbucket-pipelines

解决方案


GitHub 存储库维护@https ://github.com/amarinediary/Marionette。以下内容可能不是最新的。有关维护版本,请参阅 GitHub 链接。


您可以将 AWS Elastic Beanstalk 配置文件 ( .ebextensions) 添加到 Web 应用程序的源代码中,以配置您的环境并自定义其中包含的 AWS 资源。

在我们的例子中,如果我们不启用EPEL,并且如果我们继续安装 Chromium 作为 npm install 的一部分,Puppeteer 将无法启动 Chromium,因为libatk-1.0.so.0.

修补程序

将以下内容添加到您的应用根目录:

  1. 创建一个.npmrc文件。
  2. 将以下内容添加到您的.npmrc文件中:
unsafe-perm=true

.npmrc文件定义了运行命令时 npm 的行为方式。设置unsafe-permtrue在运行包脚本时抑制 UID/GID 切换。设置 unsafe-perm 标志以使用 root 权限运行脚本。

  1. 创建一个.ebextensions文件夹。
  2. .ebextensions文件夹中,创建一个01_enableEPEL.config文件并添加以下内容。
commands:
  01_enableEPEL:
    command: sudo amazon-linux-extras install epel -y
  1. .ebextensions文件夹中,创建一个02_installEPELPackages.config文件并添加以下内容
packages:
  yum:
    chromium: []

推荐阅读