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

在AWS Lambda中使用Boto3与Pandas触发段错误问题求助

问题

使用Python 3.9搭配boto3、pandas1.5.3和pandera0.8.1,requirements.txt仅配置pandas与pandera。代码需同时使用Pandas和S3客户端,本地运行正常,但通过容器镜像部署到AWS Lambda时触发Error: Runtime exited with error: signal: segmentation fault。移除pandas导入后代码可正常运行,已尝试修改Python、Pandas和boto3版本,Lambda已配置最大内存且拥有S3全权限。

代码

import faulthandler
import pandas as pd
import boto3

faulthandler.enable()


def lambda_handler(event, context):
    s3_client = boto3.client('s3')

    # Not implemented yet

    return {"status_code": 200}

容器镜像配置(Dockerfile)

FROM public.ecr.aws/lambda/python:3.9

COPY src/ ${LAMBDA_TASK_ROOT}

COPY requirements/requirements.txt  .

RUN  pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}"

CMD [ "lambda_function.lambda_handler" ]

错误堆栈

File "<frozen importlib._bootstrap>", line 228 in _call_with_frames_removed
File "<frozen importlib._bootstrap_external>", line 1173 in create_module
File "<frozen importlib._bootstrap>", line 565 in module_from_spec
File "<frozen importlib._bootstrap>", line 666 in _load_unlocked
File "<frozen importlib._bootstrap>", line 986 in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1007 in _find_and_load
File "/var/lang/lib/python3.9/multiprocessing/shared_memory.py", line 23 in <module>
File "<frozen importlib._bootstrap>", line 228 in _call_with_frames_removed
File "<frozen importlib._bootstrap_external>", line 850 in exec_module
File "<frozen importlib._bootstrap>", line 680 in _load_unlocked
File "<frozen importlib._bootstrap>", line 986 in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1007 in _find_and_load
File "<frozen importlib._bootstrap>", line 228 in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1058 in _handle_fromlist
File "/var/lang/lib/python3.9/multiprocessing/managers.py", line 36 in <module>
File "<frozen importlib._bootstrap>", line 228 in _call_with_frames_removed
File "<frozen importlib._bootstrap_external>", line 850 in exec_module
File "<frozen importlib._bootstrap>", line 680 in _load_unlocked
File "<frozen importlib._bootstrap>", line 986 in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1007 in _find_and_load
File "/var/runtime/s3transfer/compat.py", line 94 in <module>
File "<frozen importlib._bootstrap>", line 228 in _call_with_frames_removed
File "<frozen importlib._bootstrap_external>", line 850 in exec_module
File "<frozen importlib._bootstrap>", line 680 in _load_unlocked
File "<frozen importlib._bootstrap>", line 986 in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1007 in _find_and_load
File "/var/runtime/s3transfer/__init__.py", line 143 in <module>
File "<frozen importlib._bootstrap>", line 228 in _call_with_frames_removed
File "<frozen importlib._bootstrap_external>", line 850 in exec_module
File "<frozen importlib._bootstrap>", line 680 in _load_unlocked
File "<frozen importlib._bootstrap>", line 986 in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1007 in _find_and_load
File "<frozen importlib._bootstrap>", line 228 in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 972 in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1007 in _find_and_load
File "/var/runtime/boto3/s3/transfer.py", line 131 in <module>
File "<frozen importlib._bootstrap>", line 228 in _call_with_frames_removed
File "<frozen importlib._bootstrap_external>", line 850 in exec_module
File "<frozen importlib._bootstrap>", line 680 in _load_unlocked
File "<frozen importlib._bootstrap>", line 986 in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1007 in _find_and_load
File "/var/runtime/boto3/s3/inject.py", line 18 in <module>
File "<frozen importlib._bootstrap>", line 228 in _call_with_frames_removed
File "<frozen importlib._bootstrap_external>", line 850 in exec_module
File "<frozen importlib._bootstrap>", line 680 in _load_unlocked
File "<frozen importlib._bootstrap>", line 986 in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1007 in _find_and_load
File "/var/runtime/boto3/utils.py", line 56 in import_module
File "/var/runtime/boto3/utils.py", line 65 in _handler
File "/var/runtime/botocore/hooks.py", line 239 in _emit
File "/var/runtime/botocore/hooks.py", line 256 in emit
File "/var/runtime/botocore/hooks.py", line 412 in emit
File "/var/runtime/botocore/client.py", line 201 in _create_client_class
File "/var/runtime/botocore/client.py", line 147 in create_client
File "/var/runtime/botocore/session.py", line 997 in create_client
File "/var/runtime/boto3/session.py", line 299 in client
File "/var/runtime/boto3/__init__.py", line 92 in client
File "/var/task/lambda_function.py", line 21 in lambda_handler
File "/var/runtime/awslambdaric/bootstrap.py", line 188 in handle_event_request
File "/var/runtime/awslambdaric/bootstrap.py", line 499 in run
File "/var/runtime/awslambdaric/__main__.py", line 21 in main
File "/var/runtime/bootstrap.py", line 57 in main
File "/var/runtime/bootstrap.py", line 60 in <module>

解决方法

1. 强制源码编译pandas

段错误多因预编译的pandas二进制包与Lambda的Amazon Linux 2运行环境不兼容。修改Dockerfile的pip安装命令,强制从源码编译:

RUN pip3 install -r requirements.txt --no-binary :all: --target "${LAMBDA_TASK_ROOT}"

注:源码编译会增加镜像构建时长,需确保构建环境资源充足。

2. 使用优化后的Lambda基础镜像

替换官方基础镜像为针对Lambda优化的版本,这类镜像预配置了兼容Lambda的依赖库:

FROM public.ecr.aws/awsguru/aws-lambda-python:3.9

COPY src/ ${LAMBDA_TASK_ROOT}
COPY requirements/requirements.txt .

RUN pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}"

CMD [ "lambda_function.lambda_handler" ]

3. 将pandas打包为Lambda层

改用Lambda原生Python运行时,把pandas和pandera打包成层:

  • 在Amazon Linux 2环境(EC2/Cloud9均可)执行:
    mkdir -p python/lib/python3.9/site-packages
    pip3 install pandas==1.5.3 pandera==0.8.1 -t python/lib/python3.9/site-packages --no-binary :all:
    zip -r pandas-pandera-layer.zip python/
    
  • 将zip包上传为Lambda层,关联到目标Lambda函数即可。

4. 升级pandas版本

尝试升级pandas到1.5.x系列最新补丁版,或切换到2.x系列,新版本可能修复了Lambda环境兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 08:27:04