我的lambda播放时间很长(15分钟)。
我这样称呼它:
aws lambda invoke --region us-west-2 --profile prof --function-name func --invocation-type Event response.json
我希望lambda可以被调用一次。但是,它通常至少被调用3次。
我可以尝试通过设置reservedConcurrency=1
来避免这种情况,但有时我会得到:
TooManyRequestsException: Rate Exceeded.
为什么我的lambda叫了3次?文档中是否有某些东西可以帮助揭开这种行为的神秘色彩?
我的理论:
我的理论是,因为它是一个运行时间很长的lambda,所以该lambda会被调用几次,因为某些客户端的超时时间不够长。
是因为我在设置中尝试了2次重试吗?
答案 0 :(得分:2)
文档中是否有某些东西可以帮助揭开这个行为的神秘面纱?
我似乎您的lambda函数中存在一些错误,导致其失败。 如果在异步调用期间发生这种情况, Lambda将重试您的 函数twice:
Lambda重试两次功能错误。如果该函数没有 有足够的能力来处理所有传入的请求,事件可能会等待 在队列中等待数小时或数天才能发送到该功能。您可以 在功能上配置死信队列以捕获事件 没有被成功处理。
这将解释为什么您的函数被 3次调用的原因:1次正常时间+ 2次重试。
通常,CloudWatch Logs
可让您识别问题。 Dead Letter Queue也有助于捕获导致失败的事件。