AWS Lambda计划 - 我们可以在lambda中禁用/启用计划吗?

时间:2017-12-11 08:54:16

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

我有3套AWS lambda功能(卷备份监控功能)。我创建了3个函数,这样每个函数只有1个循环,这样执行时间(和计费)就更少了。每个lambda函数都会在SQS中调用下一个lambda函数。我还有一个lambda函数,它从队列中获取消息并执行请求的lambda函数。

我的问题是关于日程安排。我可以安排Lambda1以所需频率运行(比如说每10分钟一次)。如何安排读取队列的lambda?我可以安排每n分钟运行一次,但是一旦队列为空,就不需要执行它直到一天结束。我可以以某种方式从lambda函数中禁用AWS lambda计划吗?如果不是 - 还有什么选择?

3 个答案:

答案 0 :(得分:1)

您需要队列(SQS)功能吗?如果不是,我建议你使用SNS(与kinesis流相比它也更便宜),它可以直接触发lambdas。这样你就可以避免让lambda看到一个队列然后触发其他lambdas,这对我来说就像一个反模式。

注意:如果你应该使用SNS,你的lambda必须是幂等的,因为SNS在AWS内部至少有一次保证(你可能最终收到多次消息)。

答案 1 :(得分:0)

SQS无法直接触发Lambda。 Lambda必须使用Cloudwatch Timer轮询SQS。但我知道它并没有解决你的问题。您可以尝试一种选择,但我不能将其作为最佳选择,并且它不具有成本效益。

  

在将消息发布到SQS时,在SQS中添加将发布的触发器   消息给SNS。从SNS现在将触发lambda函数或   更好的是你可以直接将消息发布到SNS并触发   LAMBDA。

另一个更好的选择是你选择kinesis。因为通过创建分片并且导致批处理它更具成本效益。它也有Lambda的触发器。

答案 2 :(得分:0)

是的,您必须使用AWS SDK,特别是enableRule()类的方法disableRule()CloudWatchEvents(您需要events:DisableRule和{{1的IAM权限) }}。

停用规则的示例代码:

events:EnableRule

要查看规则列表,请转到https://console.aws.amazon.com/cloudwatch/home#rules