You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NodeJS AWS Lambda访问Layer代码触发EACCES权限错误求助

解决AWS Lambda部署Node.js函数时Chromium二进制文件EACCES权限错误

问题根源

Lambda运行时的lambda执行用户无权限执行/opt/nodejs/node_modules/@sparticuz/chromium/bin下的Chromium二进制文件。核心原因是打包Lambda层时未保留文件执行权限:本地执行chmod -R 777 node_modules后,默认zip命令不会保留文件权限位,导致上传至AWS后权限丢失。

修复步骤

1. 修正层打包脚本zip-pupeteer-layer.sh

更新脚本,确保打包时保留权限,并精准设置Chromium二进制文件的执行权限:

mkdir -p pupeteer-layer/nodejs

cd pupeteer-layer/nodejs

npm init -y
npm install @sparticuz/chromium@109.0.1 puppeteer-core@19.6.3

# 给Chromium二进制文件添加执行权限
chmod +x node_modules/@sparticuz/chromium/bin/*

# 使用zip的-y参数强制保留文件权限,避免上传后权限丢失
cd ..
zip -ry layer.zip nodejs/ -x "nodejs/package.json" -x "nodejs/package-lock.json"

关键改动:

  • 直接针对Chromium二进制文件设置执行权限,比递归777更精准
  • 打包时添加-y参数,确保文件权限信息被保留

2. 重新部署资源

执行Terraform命令重新生成层并部署函数:

terraform apply

额外验证项

  • 确认Lambda函数架构(x86_64/arm64)与@sparticuz/chromium版本兼容(109.0.1支持双架构)
  • 确认Lambda内存配置不低于Chromium运行要求(当前10240MB符合要求)

内容的提问来源于stack exchange,提问作者Tal Rofe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 01:20:17