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

无法复现可用Python CDK Layer压缩包,Lambda报requests导入错误

Lambda Layer导入requests失败的问题解决

问题描述

  • Lambda函数依赖requests库,旧版package.zip部署后可正常运行,但无法复现其生成方式
  • 新生成的压缩包部署后,Lambda抛出错误:
    "errorMessage": "Unable to import module 'lambdaHanlder': No module named 'requests'"
    
  • 当前生成流程:
    1. 执行pip install --target=package -r requirements.txt生成package文件夹
    2. 压缩package内文件得到package.zip
  • requirements.txt内容:
    constructs>=10.0.0,<11.0.0
    requests
    
  • CDK部署代码:
    const lambdaLayer = new lambda.LayerVersion(this, 'layer', {
            code: lambda.Code.fromAsset('package.zip'),
            description: 'Libraries needed.'
          });
    
        const fn = new lambda.Function(this, 'function', {
          runtime: lambda.Runtime.PYTHON_3_9,
          code: lambda.Code.fromAsset('lib/lambda'),
          handler: 'lambda.handler',
          description: new Date().toString(),
          layers: [lambdaLayer]
        })
    
  • 已尝试无效操作:
    • 通过pyenv切换Python 3.7/3.8/3.9/3.11/3.12版本重新生成压缩包
    • 切换Node版本重新部署

解决步骤

1. 精简依赖清单

constructs是CDK的开发依赖,无需打包进Lambda Layer,修改requirements.txt仅保留:

requests

2. 按Lambda Layer规范生成压缩包

Lambda要求Python层的依赖必须放在python子目录下,正确生成步骤:

  • 创建临时目录:
    mkdir -p layer-python/python
    
  • 安装适配Lambda环境的依赖(指定平台避免本地架构不兼容):
    pip install requests --target=layer-python/python --platform manylinux2014_x86_64 --only-binary=:all:
    
  • 进入layer-python目录,压缩内部的python文件夹:
    cd layer-python
    zip -r ../package.zip python
    

3. 验证压缩包结构

解压package.zip后需确保结构如下:

python/
├── requests/
├── certifi/
├── charset_normalizer/
├── idna/
└── urllib3/

所有依赖库必须直接位于python目录下,Lambda会自动将此路径加入Python的模块搜索路径。

4. 重新部署

替换旧的package.zip后,执行CDK部署:

cdk deploy

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 01:10:17