繁体   English   中英

本地测试时Lambda超时

[英]Lambda times out when testing locally

问题

我正在本地测试 AWS Lambda function,但我的容器在 300 秒后超时。 我一直在做一些研究并且已经阅读了一些关于这个的 AWS 文档,除了这个文档之外我还阅读了其他 StackOverflow 问题

语境

我正在使用 Python 进行开发,并使用Sentry获取有关我的 function 的遥测数据。在构建容器以在本地进行测试时,我使用以下 Dockerfile:

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

# Install the function's dependencies using file requirements.txt
# from your project folder.
COPY requirements.txt .
RUN pip install --upgrade pip -q
RUN pip install wheel
RUN pip install -r requirements.txt --target "${LAMBDA_TASK_ROOT}"

# Copy function code
COPY main.py ${LAMBDA_TASK_ROOT}
COPY misc/* ./misc/
COPY sql/* ./sql/

# Set the CMD to your handler (could be done as a parameter override)
CMD [ "main.lambda_handler" ]

我通过 Postman 创建我的 API 请求。基于此,我已经检查了超时是否源自 Postman 或 Sentry,但这些工具中的超时设置高于我得到的 300 秒超时。 我开始相信超时可能来自我正在使用的 Docker 图像,但尚未在网上找到有关此信息。 为了在代码中管理 AWS 相关的东西,我导入了boto3 库,并且还怀疑我正在寻找的设置可能与这个库有关。

生产中的 lambda 已经将超时设置为 AWS 允许的 15 分钟最大值,但在本地测试时出现问题。 我还检查了我用来在本地执行操作的访问密钥是否有超时,但没有发现任何指向这个方向的东西。

我刚开始开发 AWS Lambda 服务,所以这可能是一些非常基本的东西,谢谢!

你的猜测是正确的。 AWS Lambda Runtime Interface Emulator 中有一个默认超时,它是 300 秒。 在 GitHub 上查看它的repo 。以及显示它的特定

如果你需要增加它,你必须将它作为 ENV 变量传递给 docker。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM