从lambda调用lambda:AWS Lambda并发执行限制

时间:2016-02-24 21:50:29

标签: amazon-web-services aws-lambda

我当前的AWS Lambda函数调用另一个AWS Lambda函数,但我想确保调用成功。在查看concurrent execution limits for AWS Lambda后,我试图弄清楚如果并发限制被击中会发生什么,我试图从另一个Lambda调用Lambda。 现在,我通过在SNS中放置消息来解决这个问题,但我更喜欢直接调用Lambda来避免间接。

5 个答案:

答案 0 :(得分:3)

处理并发限制的最佳方法是使用Kinesis流而不是SNS。 分片数量将限制调用的lambda数量。如果它与您相关,您可以一次收到多条消息,这可以与SNS一起使用,这可能导致达到并发限制。

答案 1 :(得分:1)

你能详细说一下吗?不确定我理解你想要实现的目标。

可以在AWS console / EC2页面下查看Lambda限制,左上角有一个名为Limits的菜单项,您应该看到限制。 当你达到极限时,lambda将停止被调用,如果我的记忆正确地为我服务,你会在日志中看到一个错误,说明限制被击中。

答案 2 :(得分:1)

来自AWS Lambda FAQs

  

问:如果我的帐户超出并发执行的默认限制条件会怎样?

     

超过限制时,将调用AWS Lambda函数   同步将返回限制错误(429错误代码)。 LAMBDA   异步调用的函数可以吸收合理的突发   交通大约15-30分钟,之后进入事件   将被拒绝受到限​​制。在Lambda函数存在的情况下   为响应Amazon S3事件而调用,AWS Lambda拒绝了这些事件   可以由S3保留和重试24小时。亚马逊的活动   Kinesis流和Amazon DynamoDB流重试直到   Lambda函数成功或数据过期。亚马逊Kinesis和   Amazon DynamoDB Streams将数据保留24小时。

在AWS控制台内,您始终可以为AWS Lambda并发执行创建增加服务限额,无需额外费用。 This answer更详细地解释了这一点。

答案 3 :(得分:0)

我相信您目前正确处理它。我刚刚读了一篇文章,解释了你不应该从另一个lambda调用lambda,因为:

"如果你这样做,第一个将运行,直到第二个完成执行,你自己双重计费。而是使用SNS或SQS向其他Lambda发送消息。"

http://web.archive.org/web/20160713113906/http://www.appliedsoftwaredesign.com/archives/aws-lambda-pro-tips/

答案 4 :(得分:0)

在lambda内部有并发控制服务。对于调用/请求是来自sns还是直接来自它,它一无所知。它仅计算您帐户的并发(如果您设置了“每功能并发”,则还计算您的功能)。如果您的并发超出限制,则请求将受到限制,返回的http状态代码为429。

就像已经提到的其他文章一样,如果您使用一个函数调用另一个函数,则第一个函数正在等待第二个函数的结果,并发性将为2。相反,如果您使用SNS,则将依次调用这两个函数并发仅为1。

如果确实需要从其他一些lambda函数中调用lambda函数,但又想避免节流,请向lambda发送请求以增加您的帐户并发限制(默认值为1000)。这是最快,最简单的方法。