在Cloud Watch事件规则上调用AWS Lambda的并发实例

时间:2019-12-27 06:33:00

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

我每分钟设置一个云监视事件来触发AWS Lambda,我将lambda的并发执行设置为10,但是每分钟仅触发一个实例。我希望它每分钟运行10个并发实例。

1 个答案:

答案 0 :(得分:0)

Lambda中的并发管理与您期望的完全不同。 在您的情况下,您希望单个 CloudWatch事件每分钟触发多个实例。 但是,Lambda中的并发性按如下方式工作:认为您有CloudWatch Event触发Lambda以及其他触发Lambda的AWS服务(例如S3和DynamoDB)。当您的触发器之一激活Lambda时,会发生的事情是Lambda实例处于活动状态并被使用,直到Lambda完成其工作/计算。在此期间,并发单元总数将减少一。此时,如果另一个触发器激活Lambda,则总并发单位将再次减少。这将一直执行到执行Lambda实例为止。

因此,在您的情况下,总会有单个事件(CloudWatch)触发单个Lambda实例,从而导致系统不触发多个实例,因为对于它的操作,这是正确的工作方式。换句话说,您不想将并发lambda执行增加到10(或其他)来达到每分钟运行10个并行实例的目标。

为此,最好创建一个Lambda协调器,该Lambda协调器调用Lambda的多个实例,然后在最后一个Lambda中将Lambda并发设置为大于10(如果您不希望Lambda进行限制) 。这样还可以很好地管理多个实例的执行,并通过更大的错误流控制来原子地捕获错误。

您可以参考此article以获得Lambda并发行为。使用Lambda Orchestrator来管理多个实例的执行非常简单。