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

Lambda连接S3报错:name 'boto3' is not defined 求助

Lambda连接S3时出现"boto3未定义"错误的解决方案

问题重现

你编写的Lambda代码如下:

import json
import boto3
import io
from io import StringIO
import pandas as pd

s3_client = boto3.client('s3')

def lambda_handler(event, context):
    try:
        s3_Bucket_Name = "mybucket"
        s3_File_Name = "toconvert/abcd.xlsx" 
                
    except Exception as err:
        print(err)
        
    # TODO implement
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

运行时触发以下错误:

Response
{
  "errorMessage": "name 'boto3' is not defined",
  "errorType": "NameError",
  "requestId": "<RequestId>",
  "stackTrace": [
    "  File \"/var/task/lambda_function.py\", line 5, in lambda_handler\n    s3 = boto3.client('s3')\n"
  ]
}

Function Logs
START RequestId: <RequestId> Version: $LATEST
[ERROR] NameError: name 'boto3' is not defined
Traceback (most recent call last):
  File "/var/task/lambda_function.py", line 5, in lambda_handler
    s3 = boto3.client('s3')END RequestId: <RequestId>
REPORT RequestId: <RequestId>   Duration: 13.35 ms  Billed Duration: 14 ms  Memory Size: 128 MB Max Memory Used: 33 MB  Init Duration: 126.05 ms

原因分析

从错误栈可以看出,实际运行的代码中lambda_handler函数第5行调用了boto3.client('s3'),但这行代码并未出现在你提供的示例中,说明部署到Lambda的代码与本地编写的代码不一致。此外,虽然boto3是Lambda默认内置库,但自定义部署包的依赖冲突或打包错误,也会导致导入失败。

解决步骤

1. 核对部署代码一致性

  • 检查上传到Lambda的代码,确保import boto3语句位于代码最顶部,未被注释或遗漏。
  • 确认lambda_handler函数内的代码与本地编写的一致,避免出现未定义变量的情况。

2. 正确打包自定义依赖(针对pandas等第三方库)

由于你使用了Lambda默认不提供的pandas库,打包时需避免覆盖Lambda内置的boto3:

  • 本地创建空文件夹,执行以下命令安装依赖(替换X.X为Lambda使用的Python版本,如3.9):
    pip install pandas -t ./python/lib/pythonX.X/site-packages --no-deps
    
  • 将整个python文件夹打包为zip文件,上传到Lambda作为部署包。

3. 使用Lambda层管理第三方依赖

用Lambda层隔离自定义依赖与Lambda内置库,避免冲突:

  1. 创建符合结构的文件夹:python/lib/pythonX.X/site-packages(X.X为Python版本)
  2. 在该路径下安装pandas:pip install pandas -t ./python/lib/pythonX.X/site-packages
  3. 将python文件夹打包为zip,上传到Lambda层
  4. 在Lambda函数配置中添加该层

4. 匹配Python版本

确保Lambda函数配置的Python版本与本地开发环境一致,避免版本不兼容导致的导入问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 09:43:14