我如何获得触发lambda的时间表的速率?

问题描述 投票:1回答:1

我在单个lambda上附加了多个事件时间表:

  Events:
    1minute:
      Type: Schedule
      Properties:
        Schedule: rate(1 minute)
    2minute:
      Type: Schedule
      Properties:
        Schedule: rate(2 minutes)
    etc...

lambda根据计划执行不同的操作。逻辑非常简单,因此将多个时间表附加到同一功能而不是创建多个单独的功能要容易得多。

我可以从事件中解析事件名称,并使用该名称来确定时间表是什么

尽管使用sam模板创建它们意味着它们最终具有类似的名称:

myapp-myfunction2minutes-ABC123XDJXKDF

我仍然希望它们是动态创建的。我不想设置静态名称,因为这会阻止同时存在多个堆栈,并且我希望它们具有完全的命名空间和隔离性。

我当然可以解析myapp-myfunction2minutes-ABC123XDJXKDF,因为它的可预测性足够好,但是如果我可以添加具有任意元数据的其他字段,那就更好了,这样我就不必进行任何字符串解析。是否支持?

编辑:在模板中配置如下:

  Events:
    1minute:
      Type: Schedule
      Input: '{"Key": "Value1"}'
      Properties:
        Schedule: rate(1 minute)
    2minute:
      Type: Schedule
      Input: '{"Key": "Value2"}'
      Properties:
        Schedule: rate(2 minutes)
    etc...

然后“输入”替换发送给lambda的entire事件。因此,在函数中(如果是python)可以像event["Key"]一样进行访问。

使我震惊的另一件事是Input似乎直接与其在其下创建的特定Lambda连接。在测试中,我部署了配置有输入的这些事件的堆栈,然后进行快速测试,将事件之一(cloudwatch规则)附加到different lambda,以尝试读取其创建的事件。这样做没有用,另一个lambda在计划中被触发,但是发送给它的事件对象没有Input-它是一个常规的cloudwatch计划事件对象。

amazon-web-services aws-lambda amazon-cloudformation aws-sam
1个回答
3
投票

似乎您想知道哪个时间表触发了Lambda函数。好吧,您实际上是在询问价格,但是希望知道哪个时间表触发了同样的价格。

添加Lambda触发器时,您可以指定Constant,它将通过event传递。您可以使用它来触发所需的行为。

“

© www.soinside.com 2019 - 2024. All rights reserved.