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

AWS Lambda导入错误:无法导入lambda_function及DEFAULT_CIPHERS问题求助

AWS Lambda中requests库DEFAULT_CIPHERS导入错误解决方法

问题描述

在AWS Lambda中运行Python程序时出现模块导入错误,程序无法执行,核心原因是requests依赖的urllib3组件版本与Lambda内置环境不兼容,导致无法导入DEFAULT_CIPHERS。

代码示例

import json
import boto3
import os
import requests

def lambda_handler(event, context):
    file = '2011-02-12-0.json.gz'
    download_res = requests.get(f"https://data.gharchive.org/{file}")
    print(f"Files downloaded successfully - Filename: {file}")
    os.environ.setdefault('AWS_PROFILE', 'myid')
    s3 = boto3.client('s3')
    upload_res = s3.put_object(Bucket='my-demo-bucket3', Key=file, Body=download_res.content)
    print("Files Uploaded successfully")
    return upload_res

报错信息

{
  "errorMessage": "Unable to import module 'lambda_function': cannot import name 'DEFAULT_CIPHERS' from 'urllib3.util.ssl_' (/var/task/urllib3/util/ssl_.py)",
  "errorType": "Runtime.ImportModuleError",
  "requestId": "5d82baed-2ee6-41cd-a8e7-d24a59061dbc",
  "stackTrace": []
}

解决方案

该错误由本地打包的urllib3版本与Lambda内置环境版本冲突导致,可通过以下方式解决:

  • 使用Lambda层管理依赖
    避免将requests、urllib3直接打包到代码包,改用Lambda层部署:

    1. 本地创建目录结构python/lib/pythonX.X/site-packages(X.X为Lambda使用的Python版本,如3.9)
    2. 执行pip install requests -t ./python/lib/python3.9/site-packages
    3. 将python目录打包为zip文件
    4. 在AWS控制台创建Lambda层并上传该zip,关联到目标Lambda函数
  • 指定兼容的依赖版本
    如果必须打包依赖到代码包,在requirements.txt中明确指定兼容版本:

    requests==2.28.2
    urllib3==1.26.15
    

    执行pip install -r requirements.txt -t .后,再打包代码和依赖上传至Lambda。

  • 优化代码冗余配置
    Lambda通过IAM角色获取AWS服务权限,无需设置AWS_PROFILE环境变量,删除代码中的os.environ.setdefault('AWS_PROFILE', 'myid')行,避免干扰运行环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 06:58:30