docker 本地测试时Lambda超时

enxuqcxy  于 2023-02-03  发布在  Docker
关注(0)|答案(1)|浏览(137)

问题

我正在本地测试AWS Lambda函数,但是我的容器在300秒后超时。我一直在做一些研究,并且已经阅读了一些关于这个的AWS文档,除了这个文档,我还阅读了other StackOverflow questions

背景

我使用Python进行开发,并使用Sentry来获取函数的遥测信息,在构建容器以进行本地测试时,我使用了以下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 image I'm using。但是还没有在网上找到相关的信息。为了管理代码中与AWS相关的东西,我导入了boto3 library,并且怀疑我正在寻找的设置可能与这个库相关。
生产中的lambda已经将超时设置为AWS允许的最大值15分钟,但在本地测试时出现了问题。我还检查了用于本地执行的访问键是否有超时,但没有发现任何指向此方向的内容。
我是新开发的AWS Lambda服务,所以这可能是一些非常基本的东西,谢谢!

svmlkihl

svmlkihl1#

你的猜测是正确的。在AWS Lambda运行时接口模拟器中有一个默认的超时,它是300秒。请参见GitHub上的repo
如果你需要增加它,你必须把它作为ENV变量传递给docker。

相关问题