代码之家  ›  专栏  ›  技术社区  ›  n00b

如何使用aws dynamodb和aws sqs创建作业队列?

  •  0
  • n00b  · 技术社区  · 6 年前

    我有一个lambda函数,我想根据作业参数以特定的间隔触发它。例如,我希望能够添加如下作业参数

    {"run_at": "2018-06-08-10-10-30", "params": {"metadata":"xyz"}}
    

    所以我希望lambda函数在 run_at 时间,就在那一分钟, params 作为事件传递给我的lambda函数。

    有可能吗?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Popoi Menenet    6 年前

    是的,这是可能的。你可以给我们发电机的 生存时间 (timestamp列被设置为ttl),表中的记录过期时将被删除,删除的记录将出现在 发电机流 . 一旦它出现在流中,您就可以设置一个lambda来触发进一步的处理(在sqs中排队、发布到sns等)。文档 Stream TTL .

    简单地说,您可以通过在dynamodb中添加一个记录来注册一个作业,该记录的时间戳是事件发生的时间(时间戳是ttl)。然后,一旦到达时间戳,dynamodb将自动删除记录并将其放入将触发lambda以启动事件的流中。

    请注意,记录中的所有活动(插入/更新/删除)都将在流中可用。所以您可能想在lambda中做一些条件逻辑,以便只处理delete record。

        2
  •  0
  •   dmulter    6 年前

    特定间隔部分易于使用 Schedule Expressions . 可以使用第一个lambda函数将不同的参数传递到特定的lambda函数中,然后调用共享函数。其他方法是可能的,基于你想用你的设计实现什么。