[更新 1:] 当我将超时时间增加到 1 分钟时,CloudWatch 在脚本成功运行两次后在中间显示以下内容,然后是一个:
REPORT RequestId: xxx-xxx Duration: 7670.23 ms Billed Duration: 7671 ms Memory Size: 128 MB Max Memory Used: 36 MB
RequestId: xxx-xxx Error: Runtime exited without providing a reason
Runtime.ExitError
原帖
我有一个通过自定义容器映像运行的 Lambda 函数。其中单个 Python 脚本的要点如下:
# imports
def lambda_handler(event, context):
# read a JSON file from S3, check an FTP server for some info, and prepare a JSON response
# if file not found or some other error, handle exception, prepare appropriate JSON response
# return JSON response
# Here be helper functions
if __name__ == '__main__':
lambda_helper(None, None)
# also tried response = lambda_helper(None, None)
这是阶梯函数中的第一个状态,它将由 CloudWatch Events 定期触发,因此不需要任何输入。
它是从容器中调用的
CMD ["python", "script.py"]
当我从控制台测试此功能时,我在 CloudWatch 中看到所有预期的日志消息,包括最后一条指示成功执行的日志消息,但是此过程会重复几次,总体上被视为失败(顶部的红色横幅) .
它在 3 秒后超时,因为这是默认限制,但不是在脚本成功运行几次之前。没有内存问题(使用 20-30 MB,共 128 MB)或其他错误。
在早期版本中,对 的调用lambda_handler
包含在 中sys.exit()
,但在阅读了一些关于它的线程干扰了 Lambda 处理函数的方式后,我将其删除。唯一的区别是我可以在 CloudWatch 中看到 JSON 响应,而现在我只能看到日志消息。
我已经阅读了大量的线程和文档,但我仍然无法解决这个问题。任何帮助将不胜感激。