【问题标题】:Is it possible to get AWS StepFunction status transitions as an event/callback?是否可以将 AWS StepFunction 状态转换作为事件/回调获取?
【发布时间】:2020-08-14 21:59:46
【问题描述】:

AWS StepFunctions 是一种服务,它基本上是一个状态机,其状态是某种形式任务的执行,通常是无服务器 (lambda) 任务。

CloudWatch events 可用于监控 StepFunction 状态机的启动/停止,但这些事件似乎只包含有关状态机执行作为一个整体的开始或结束(成功与否)的信息,不是执行进度,因为它逐步通过状态机的各个状态。例如,如果我有一个状态机执行,其中步骤是 ABC,那么很高兴知道状态机何时从 A 转换为 B 并从BC,不仅仅是启动或停止。

是否可以通过某种机制接收 StepFunction 转换的通知,特别是状态机已进入的状态的名称?鉴于状态机可以长期存在,我不想进行轮询。这里最好的方法是什么?

【问题讨论】:

  • 实际上我认为每次 StepFunction 状态更改都会发出一个事件。您添加的链接仅显示示例
  • 不,不幸的是,当我有一个订阅源为 aws.states 的所有事件的 Lambda 时,这就是我所看到的全部内容。如果你使用SendTaskSuccess 或类似的东西来表示异步任务的完成,那么你会得到一个带有"detail-type": "AWS API Call via CloudTrail" 的事件,否则就没有别的了。如果没有状态机进度的反馈,似乎有点垃圾。
  • 为什么执行进入状态需要通知?
  • 因为你很可能有一个外部服务需要在观察到状态机进入状态时采取行动——这意味着你不需要通过嵌入将状态机与观察者耦合观察者的逻辑转化为状态机的逻辑。

标签: amazon-web-services aws-lambda aws-step-functions


【解决方案1】:

您可以使用带有 SNS 或 Lambda 的任务状态添加自己的通知。

否则,您可以通过调用 GetExecutionHistory 来获取执行历史记录。

【讨论】:

  • 两者都不是一个好的解决方案:第一个选项意味着您需要将所有可能的操作耦合到状态机本身,如果状态机逻辑不受您的控制并且您可能无法做到这一点您只是想监视状态机的执行进度。第二个选项意味着轮询,这意味着您将有不一致的状态:您从猜测执行历史中获得的答案可能不代表您收到回调时的当前状态。
猜你喜欢
  • 2012-03-15
  • 2019-04-01
  • 2020-02-05
  • 1970-01-01
  • 2019-11-27
  • 2020-03-25
  • 2016-01-18
  • 1970-01-01
  • 2011-06-24
相关资源
最近更新 更多