amazon-web-services - 如何获取触发 lambda 的计划的速率?

标签 amazon-web-services aws-lambda aws-cloudformation aws-sam

我有多个事件时间表附加到一个 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-myfunction2months-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 的整个事件。所以在函数中(如果是python)可以像event["Key"]这样访问。

另一件让我困惑的事情是,Input 似乎直接连接到它在其下创建的特定 lambda。在测试中,我部署了带有配置了输入的事件的堆栈,然后为了进行快速测试,我将其中一个事件(CloudWatch 规则)附加到不同 lambda,以尝试读取它创建的事件。这样做不起作用,另一个 lambda 在计划上被触发,但发送给它的事件对象没有输入 - 它是一个常规的 CloudWatch 计划事件对象。

最佳答案

您似乎想知道哪个计划触发了 Lambda 函数。好吧,您实际上要求的是费率,但希望知道哪个时间表触发了它也同样好。

添加 Lambda 触发器时,您可以指定一个常量,该常量将通过事件传递。您可以使用它来触发所需的行为。

CloudWatch Events rule

关于amazon-web-services - 如何获取触发 lambda 的计划的速率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62055332/

相关文章:

python - 从S3向Elasticsearch发送日志文件的Python 2.7与3.8 Lambda

JSON CloudFormation 格式不正确。我的 JSON 文件不正确吗?

amazon-web-services - boto3 过滤器中的 "or"条件

amazon-web-services - 如何在 EMR 中引导期间配置 Zeppelin-env.sh

python-3.x - Vault 用 python 读取 secret

amazon-web-services - 更新堆栈中的 CloudFormation 等待条件

amazon-s3 - awsgluecloudformation Parquet 作业

amazon-web-services - 您可以使用 Cloud Formation 创建使用计划吗?

ios - 无法使用 XCode 7.0 Beta、iOS 8.3 和 aws-ios-sdk-2.2.0 识别 AWSDynamoDB

json - AWS CloudFormation 网络接口(interface)错误