我在lambda_handler.py中有一个简单的python脚本:
def handler(event, context):
print("success")
return "Success"
我把它打包在Docker中,以便在AWS Lambda上运行。
停靠文件为:
FROM public.ecr.aws/lambda/python:3.9
COPY 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"]
然而,当调用lambda时,我得到一个权限错误:
{
"errorMessage": "[Errno 13] Permission denied: '/var/task/lambda_handler.py'",
"errorType": "PermissionError",
"requestId": "",
"stackTrace": [
" File \"/var/lang/lib/python3.9/importlib/__init__.py\", line 127, in import_module\n return _bootstrap._gcd_import(name[level:], package, level)\n",
" File \"<frozen importlib._bootstrap>\", line 1030, in _gcd_import\n",
" File \"<frozen importlib._bootstrap>\", line 1007, in _find_and_load\n",
" File \"<frozen importlib._bootstrap>\", line 986, in _find_and_load_unlocked\n",
" File \"<frozen importlib._bootstrap>\", line 680, in _load_unlocked\n",
" File \"<frozen importlib._bootstrap_external>\", line 846, in exec_module\n",
" File \"<frozen importlib._bootstrap_external>\", line 982, in get_code\n",
" File \"<frozen importlib._bootstrap_external>\", line 1039, in get_data\n"
]
}
1条答案
按热度按时间rryofs0p1#
在AWS Troubleshooting Guide之后,lambda运行时需要具有读取部署包中的文件的权限。
在运行
docker build
之前在本地计算机上运行:chmod 644 lambda_handler.py
修复了该问题。