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

Python 3.13 Lambda使用wkhtmltopdf遇部署包解压失败求助

AWS Lambda部署wkhtmltopdf包解压失败排查方案

问题描述

在Python 3.13版本的AWS Lambda函数中部署wkhtmltopdf相关包时,收到错误:

Failed to update the function ___: AWS Lambda could not unzip the deployment package

已执行的操作:

  • 下载指定仓库并执行./build.sh,生成包含bin和lib文件夹的压缩包
  • 因压缩包超过10MB限制,上传至S3并使用其URL进行部署

可能遗漏的操作及解决方法

1. 检查压缩包结构是否符合Lambda要求

Lambda层的压缩包必须将bin、lib等核心文件夹放在根目录,不能嵌套在子文件夹内。执行./build.sh生成压缩包后,本地解压验证:如果解压后看到的是一个父文件夹(比如仓库名称),再在里面找到bin和lib,则需要重新打包,直接将bin和lib文件夹压缩为zip包。

2. 配置Lambda对S3对象的读取权限

Lambda服务需要具备读取该S3压缩包的权限:

  • 给Lambda的执行角色添加权限策略,包含s3:GetObject动作,资源指定为该S3对象的ARN(格式:arn:aws:s3:::bucketname/wkhtmltopdf.zip)
  • 避免直接设置S3对象为公开可读(生产环境不推荐)

3. 验证压缩包完整性

上传到S3的压缩包可能在传输过程中损坏,导致Lambda无法解压:

  • 从S3下载压缩包到本地,尝试手动解压,确认文件无损坏
  • 重新执行./build.sh生成新的压缩包,再重新上传到S3

4. 确认编译版本与Python 3.13运行时兼容

Python 3.13对应的Lambda运行时是Amazon Linux 2023,需确认该仓库的build.sh脚本是否针对该环境编译wkhtmltopdf。如果编译环境不匹配,可能导致依赖库不兼容,间接引发解压或运行问题。可以尝试在Amazon Linux 2023环境中重新编译生成压缩包。

5. 确认部署方式正确

如果是将该包作为Lambda层部署:需在创建层时选择“从S3上传”,并正确填写S3对象URL;如果是直接合并到Lambda函数部署包中,需确保总大小符合Lambda限制(未解压最大250MB,解压后最大512MB),且包结构符合Python函数的部署要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 22:42:33