在Docker中部署AWS Lambda Python代码时遭遇权限[Errno 13]错误求助
解决AWS Lambda Docker镜像部署的权限错误
问题原因
Lambda运行时使用非root用户(UID 1000)执行代码,当你从本地复制lambda_handler.py到容器时,文件权限继承了本地设置(可能是仅root可读),导致运行用户无法读取该文件,触发PermissionError。
解决方案
有两种方式修复权限问题:
方法1:复制文件时直接指定权限
在COPY命令中添加--chown参数,将文件所有权转移给Lambda运行用户:
FROM public.ecr.aws/lambda/python:3.9 # 复制文件并指定归属为Lambda运行用户(UID 1000) COPY --chown=1000:1000 lambda_handler.py ${LAMBDA_TASK_ROOT} RUN yum install -y gcc-c++ pkgconfig poppler-cpp-devel RUN pip install selenium boto3 --target "${LAMBDA_TASK_ROOT}" CMD ["lambda_handler.handler"]
方法2:复制后修改文件权限
如果无法在复制时指定权限,可通过RUN命令修改文件的可读权限:
FROM public.ecr.aws/lambda/python:3.9 COPY lambda_handler.py ${LAMBDA_TASK_ROOT} # 赋予所有用户读取文件的权限 RUN chmod 644 ${LAMBDA_TASK_ROOT}/lambda_handler.py RUN yum install -y gcc-c++ pkgconfig poppler-cpp-devel RUN pip install selenium boto3 --target "${LAMBDA_TASK_ROOT}" CMD ["lambda_handler.handler"]
验证
重新构建镜像并部署到Lambda后,调用函数即可正常执行,不再出现权限错误。
内容的提问来源于stack exchange,提问作者user7692855
相关产品推荐
相关产品推荐

