AWS CLI Lambda一次调用会导致多次调用

时间:2020-07-02 01:18:38

标签: amazon-web-services aws-lambda aws-cli

我的lambda播放时间很长(15分钟)。

我这样称呼它:

aws lambda invoke --region us-west-2 --profile prof --function-name func --invocation-type Event response.json

我希望lambda可以被调用一次。但是,它通常至少被调用3次。

enter image description here

我可以尝试通过设置reservedConcurrency=1来避免这种情况,但有时我会得到:

TooManyRequestsException: Rate Exceeded.

为什么我的lambda叫了3次?文档中是否有某些东西可以帮助揭开这种行为的神秘色彩?

我的理论:

我的理论是,因为它是一个运行时间很长的lambda,所以该lambda会被调用几次,因为某些客户端的超时时间不够长。

是因为我在设置中尝试了2次重试吗?

enter image description here

1 个答案:

答案 0 :(得分:2)

文档中是否有某些东西可以帮助揭开这个行为的神秘面纱?

我似乎您的lambda函数中存在一些错误,导致其失败。 如果在异步调用期间发生这种情况, Lambda将重试您的 函数twice

Lambda重试两次功能错误。如果该函数没有 有足够的能力来处理所有传入的请求,事件可能会等待 在队列中等待数小时或数天才能发送到该功能。您可以 在功能上配置死信队列以捕获事件 没有被成功处理。

这将解释为什么您的函数被 3次调用的原因:1次正常时间+ 2次重试。

通常,CloudWatch Logs可让您识别问题。 Dead Letter Queue也有助于捕获导致失败的事件。