首页 > 解决方案 > 如何运行计划的 AWS Lambda 函数,其中计划的时间是一个参数?

问题描述

我想知道是否可以使用带有输入参数的 AWS Lambda 运行 cron 作业。

示例:我调用我的 API 端点:api.example.com/LambdaFunction5?timestamp=1571299919&someOtherVariable=NetworkBytes

如您所见,这是对我的 API 的 get 请求,它将接受两个参数,一个 Epoch 时间戳(从现在起 1 天)和另一个参数(可以是任何参数)。然后,此 API 调用将使用另一个参数作为 lambda 函数中的变量,在给定的时间戳上执行一个 con 作业。

我将如何使用 AWS Lambda 实现这一目标?我知道 AWS 允许我为特定时间安排 lambda:

https://docs.aws.amazon.com/lambda/latest/dg/tutorial-scheduled-events-schedule-expressions.html

但问题是我不想每次我想要一个 cron 作业时都创建一个新的 lambda 函数。

这是一种方法吗,所以当我调用我的 API 端点时,它会根据我给出的时间创建一个 cron 作业并只运行一次,并在该作业运行后“删除”自身,所以我最终不会一百万个不同的函数或 CloudWatch 规则?

标签: python-3.xamazon-web-servicesaws-lambdascheduled-tasks

解决方案


您可以定义与 cloudwatch 事件一起发送的自定义 json 属性:

  • 转到 Amazon EventBridge > 事件 > 规则
  • 点击你的规则
  • 点击右上角的“编辑”按钮
  • 向下滚动到“选择目标”
  • 点击“配置输入”</li>
  • 选择“常量(JSON 文本)”单选按钮
  • 在可编辑字段中添加带有参数的 json 数据。

您可能会在控制台中遇到阻止您通过控制台进行编辑的错误。您可能需要使用 CLI(我还没有语法,抱歉)。错误在这里:https ://github.com/concurrencylabs/aws-pricing-tools/issues/8

错误已关闭,但仍然存在。


推荐阅读