无法将 Puppeteer 和 Chromium 与 Bit-bucket 的管道安装到 AWS Elastic Beanstalk



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

该代码包括安装木偶v5.0.0安装时下载铬。

由于下载 Chromium 时的访问权限,部署失败,请参阅下文: 错误:无法下载铬 r756035!设置"PUPPETEER_SKIP_CHROMIUM_DOWNLOAD"env 变量以跳过下载。 错误:EACCES:权限被拒绝,mkdir '/tmp/deployment/application/node_modules/puppeteer/.local-chromium'

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

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


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

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

  • Source @ Run Puppeteer on AWS EC2 執行 Amazon-Linux 的 AWS EC2 執行
  • 個體

Hotfix

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

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

.npmrc文件定义运行命令时 npm 的行为方式。将unsafe-perm设置为true在运行包脚本时禁止 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: []

只需在nodeAPP 的根目录中添加 .npmrc 文件,其中包含以下内容:

unsafe-perm=true

这将强制 NPM 尝试始终在运行脚本的上下文中运行。因此,您不会被"权限被拒绝"阻止

最新更新