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

AWS Lambda容器镜像报错:无法导入模块'app',请求排查帮助

解决Lambda Docker镜像的模块导入错误

我将Lambda函数打包为Docker镜像存储在ECR仓库中,该函数仅输出"Welcome",已配置为当S3存储桶有活动时触发。当我向S3上传文件时,Lambda虽被调用但报错:

[ERROR] Runtime.ImportModuleError: Unable to import module 'app': No module named 'app' Traceback (most recent call last):

该错误可在AWS Lambda的CloudWatch日志中查看。

我的文件内容

app.py

import os
import logging

logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)

logger.info('In app.py................................')

def handler(event, context) -> None:
    logger.info('Inside handler....Welcome')
    logger.info("Iam from app.py")
    logger.info('event: ', event)
    logger.info('context: ', context)

Dockerfile

FROM public.ecr.aws/lambda/python:3.9
WORKDIR /var/task
COPY . .

RUN pip3 install --no-cache-dir \
    --trusted-host pypi.org \
    --trusted-host pypi.python.org \
    --trusted-host files.pythonhosted.org \
    --upgrade pip

RUN pip3 install --no-cache-dir \
    --trusted-host pypi.org \
    --trusted-host pypi.python.org \
    --trusted-host files.pythonhosted.org \
    -r requirements.txt \
    --target "${LAMBDA_TASK_ROOT}"

CMD [ "app.handler" ]

requirements.txt

boto3>=1.24.1

问题排查与解决方法

  • 确认文件复制完整性:本地构建镜像后,进入容器检查/var/task目录下是否存在app.py:

    docker build -t lambda-test .
    docker run -it lambda-test /bin/bash
    ls /var/task
    

    如果没有app.py,说明构建命令未在包含该文件的目录执行,导致COPY . .未正确复制文件。

  • 简化Dockerfile配置:官方Lambda Python镜像默认工作目录为/var/task,LAMBDA_TASK_ROOT也指向该路径,可简化配置避免干扰:

    FROM public.ecr.aws/lambda/python:3.9
    
    COPY . ${LAMBDA_TASK_ROOT}
    
    RUN pip3 install --no-cache-dir --upgrade pip && \
        pip3 install --no-cache-dir -r requirements.txt --target "${LAMBDA_TASK_ROOT}"
    
    CMD [ "app.handler" ]
    
  • 检查文件权限与命名:确保app.py文件名无拼写错误,且容器内文件权限允许Lambda读取:

    # 进入容器后执行
    ls -l /var/task/app.py
    

    若权限不足,可在Dockerfile中添加权限设置:

    RUN chmod 644 ${LAMBDA_TASK_ROOT}/app.py
    
  • 验证CMD指令准确性:确认CMD [ "app.handler" ]中的模块名(app对应app.py)和函数名(handler)完全匹配,大小写一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:47:27