自定义AWS Lambda Runtime部署ECR后启动失败,请求排查
排查自定义AWS Lambda Runtime镜像在Lambda环境中exit status 1错误
1. 检查文件与目录权限
Lambda运行时默认使用sbx_user1051非root用户执行代码,本地测试用root权限可能掩盖权限问题:
- 在Dockerfile中添加权限配置,确保关键文件/目录对Lambda用户可读可执行:
RUN chmod +x /home/entry_script.sh RUN chmod -R 755 /home/ RUN chown -R sbx_user1051:sbx_user1051 /home/ - 确认
/usr/bin/python3、awslambdaric相关路径对非root用户有访问权限。
2. 验证awslambdaric安装与路径
Lambda环境中会执行exec /usr/bin/python3 -m awslambdaric $@,需确保依赖正确安装:
- 在Dockerfile中明确安装
awslambdaric:RUN pip install awslambdaric - 检查Python模块路径,确保
awslambdaric在Lambda用户的Python环境中可被找到,必要时设置PYTHONPATH:ENV PYTHONPATH=/home:/usr/local/lib/python3.x/site-packages
3. 查看CloudWatch详细日志
表面的exit status 1只是通用错误,CloudWatch日志会包含具体报错信息:
- 进入Lambda函数的「监控」->「日志」->「CloudWatch日志组」,查看启动阶段的日志,可能找到脚本执行失败、模块找不到、路径错误等具体原因。
4. 修正入口点的路径问题
app.main需要在Python的搜索路径中,否则会出现模块找不到的错误:
- 在Dockerfile中设置
PYTHONPATH包含/home目录:ENV PYTHONPATH=/home - 或者在
entry_script.sh的else分支中切换到/home目录再执行:else cd /home && exec /usr/bin/python3 -m awslambdaric $@ fi
5. 本地模拟Lambda环境测试
手动设置AWS_LAMBDA_RUNTIME_API环境变量,复现Lambda的执行逻辑:
docker run -e AWS_LAMBDA_RUNTIME_API=127.0.0.1:9001 myImage
如果本地出现同样错误,就能直接在本地调试排查脚本或路径问题。
内容的提问来源于stack exchange,提问作者RichardAtkin
相关产品推荐
相关产品推荐

