【问题标题】:How to set the second that eventBridge events trigger at?如何设置 eventBridge 事件触发的秒数?
【发布时间】:2021-12-01 16:51:20
【问题描述】:

我可以触发并EventBridge(CloudWatch 中的规则/计划功能formerly)以一定的速率(例如,每 5 分钟一次)或通过 cron 设置来执行相同的操作。

利率设置通常会在以下时间触发: 7:05:13、7:10:13、7:15:13 等

如果我删除 EventBridge 规则并重建它,它将在以下位置触发: 7:05:42、7:10:42、7:15:42 等...

我的猜测是,它从规则第一次生效的那一刻开始,并且只是尽职尽责地以这个速度跳动。

我需要在完全相同的第二秒触发 - 最好是在第零秒或其他一些非常接近于零的值,因为我正在与另一个在第零秒收集的进程进行同步数据收集 - 是否存在定义 EventBridge 计划任务规则的开始秒的方法(如果有使用 serverless framework 的方法特别有用)?

我已经尝试了一个 cron 设置并且得到了相同的基本结果(当然,不同的秒数,但仍然不是第 0 秒 - 而且它触发的秒数在每次部署规则时都会改变)

羞于确保我的企业级 serverless framework 部署每次都在零秒结束(这对于大型多成员项目来说是不合理的)如何设置 cron 的二级定时还是 eventBridge(以前的 cloudwatch)中基于速率的规则任务?

之前的问题 (How can I schedule cloudwatch rule at second level?) 暗示默认情况是在第 0 秒触发,但似乎并非如此。

【问题讨论】:

  • 请不要包含 Google 重定向链接。只需包含目标页面的链接即可。
  • 提前一分钟触发 Lambda 是否可行,然后等到 00 秒做任何你需要做的事情。平均会浪费 30 秒,但可能并不可怕。
  • 让这个其他服务触发 lambda 可能是一个更好的主意。
  • 这个 lambda 实际上每分钟触发一次并持续大约 5-10 秒(它从不同的 api 提取异步数据)....在“前一分钟”执行此操作并等待实际上意味着我会有一个 24/7 运行的 lambda ......这......不太理想。

标签: amazon-web-services amazon-cloudwatch aws-event-bridge


【解决方案1】:

EventBridge 不提供秒精度。 即使您观察到它,它也不能保证以精确的分钟/秒执行。

如果您需要以秒精度执行,那么 EventBridge 不是适合您的工具。

如此处所述: https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html

CloudWatch Events 不提供秒级精度的计划 表达式。使用 cron 表达式的最佳分辨率是 分钟。由于 CloudWatch Events 的分布式特性和 目标服务,计划规则的时间之间的延迟 触发和目标服务兑现执行的时间 目标资源可能是几秒钟。您的预定规则是 在那一分钟内触发,但不是在精确的第 0 秒。

【讨论】:

  • "那么 EventBridge 不是适合您的工具。" -- 替代解决方案的建议?
  • 我可能会使用像schedule.readthedocs.io/en/stable 这样的调度程序运行一个单独的永久 docker 容器,它会调用 Lamba。必须为 lambda 提供并发性,以减少本身可能是几秒钟的预热延迟。
猜你喜欢
  • 1970-01-01
  • 2011-12-26
  • 1970-01-01
  • 2021-11-17
  • 1970-01-01
  • 2015-09-17
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
相关资源
最近更新 更多