调用Lambda函数时出现的问题:AWS Lambda并发执行限制

3
我的当前AWS Lambda函数调用另一个AWS Lambda函数,但我想确保调用成功。在查看AWS Lambda并发执行限制后,我试图弄清楚如果达到并发限制,并且我尝试从另一个Lambda调用Lambda会发生什么。 目前,我通过将消息放入SNS来解决此问题,但我更喜欢直接调用Lambda,避免间接性。
4个回答

3

处理并发限制的最佳方法是使用Kinesis流而不是SNS。 分片数将限制调用Lambda函数的数量。如果对您来说相关,您可以一次获取多条消息,这是SNS无法做到的,可能会导致达到并发限制。


1
请您详细说明一下吗?我不确定您想要实现什么。
Lambda限制可以在AWS控制台/ EC2页面中查看,左上角有一个名为“Limits”的菜单项,您应该在那里看到限制。当您达到限制时,Lambda将停止被调用,如果我没记错的话,您会在日志中看到一个关于达到限制的错误提示。

1

来自AWS Lambda FAQs:

问:如果我的账户超过并发执行的默认限制会发生什么?

超过限制后,同步调用的AWS Lambda函数将返回一个限流错误(429错误代码)。异步调用的Lambda函数可以吸收合理的突发流量,大约持续15-30分钟,之后传入的事件将被拒绝作为被限流的。如果Lambda函数是响应Amazon S3事件而被调用,则被AWS Lambda拒绝的事件可能会被S3保留并重试24小时。来自Amazon Kinesis流和Amazon DynamoDB流的事件将重试,直到Lambda函数成功或数据过期。Amazon Kinesis和Amazon DynamoDB Streams会保留数据24小时。


在AWS控制台中,您可以免费创建AWS Lambda并发执行的服务限制增加此答案更详细地解释了这一点。

1
你有没有做过这个的经验?有没有最大限制? - Andy Hayden
我在另一个回答中添加了一个链接,详细解释了这个问题。理论上没有最大限制,但他们不会盲目地接受每一个增加请求。 - birnbaum

0

1
你可以通过将“Event”值传递给invoke方法的“InvocationType”参数,在一个lambda函数内异步调用另一个lambda函数。调用lambda函数完成执行后,不会等待接收lambda函数的完整执行。 - rk2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接