为 Slack 机器人动态调度的 Lambda 触发器



我的公司有一个内部Slack机器人,用于在部门之间创建和发送报告。目前,有人可以创建报告,然后在准备就绪时手动将其发送给部门。这两个操作都是通过一个简单的 Lambda 函数处理的。但是,我们遇到了人们忘记稍后发送报告的问题。

我正在寻找一种方法来允许用户预先选择他们希望发送报告的时间。我已经研究了根据所选时间为每个报告动态创建一个 CloudWatch cron 表达式,但这似乎不是很可扩展 - 如果多个用户希望同时发送报告怎么办?

轮询 SQS 队列之类的方法是否更具可持续性*,或者是否有更好的解决方案来处理事件的动态调度?

*我不想每分钟运行一次 Lambda 函数来轮询消息。

任何建议将不胜感激!

以下是如何使用 Slack 实现需求的大致草图:

  • 向 Slack 机器人添加功能,以便用户可以输入发送报告的截止日期。 例如,使用松弛对话框或常用选项下拉列表
  • 将报告信息与发送截止日期存储在数据库中
  • 定期对数据库进行批处理运行并发送到期 报告

批处理可以是 lambda 函数。我假设您还可以使用 lambda 函数(例如数据库(存储持久数据。

要定期运行批处理,例如每 5 分钟运行一次,您需要一个 CRON 调度程序。我自己使用的一个很好的是 cron-job.org。非常适合通过http请求触发应用程序,并且他们有免费计划。

我不会使用队列,因为报告很可能不会按连续发送顺序排列。因此,数据库表,您可以在其中查询以仅获取到期表的效果要好得多。

最新更新