【问题标题】:Alternate of If condition in AWS stateAWS 状态下 If 条件的替代
【发布时间】:2022-01-18 04:22:43
【问题描述】:

我确实有一个场景,其中输入 Json 字段有一个包含 3 个字段的映射,并且每个字段的存在我想执行一个 lambda。我正在尝试使用选择状态进行此操作,该状态可以正常工作,直到不超过一个条件为真。在我的场景中,我可以有 2 个条件也为真,这反过来应该调用 2 个选择条件的下一个状态。 似乎选择是开关盒的替代品,我正在寻找带有条件检查的 if 条件。 请分享任何此类案例的示例。

示例 json:-

  "events" : {
         
         "event" : {
            "EVENT_1" : "ACTIVE",
            "EVENT_2" : "ACTIVE"
          }
    
     }

示例状态机:-

   ChoiceStateX": {
      "Type": "Choice",
      "Choices": [
          {
            "Variable": "$.event.EVENT_1",
            "StringEquals": "ACTIVE",
            "Next" : "Event_1"
          },
          {
            "Variable": "$.event.EVENT_2",
            "StringEquals": "ACTIVE",
            "Next" : "Event_2"
          }
          
          }
          }

事件 json 中的事件不是固定字段。它可以只有一个 event_1 或 2,甚至可以有 3 个事件。由于有许多事件,它应该调用那些许多任务。 所以“下一个”是完全动态的,并且依赖于输入的 Json。 请建议我如何解决这种状态。

【问题讨论】:

  • 您能添加一个条件逻辑的最小示例吗?例如:如果所有 A、B、C 字段都存在,则执行 X;如果A,B然后做Y等?还是如果 A,B,C 然后做 X,Y,Z?
  • 您的问题相当混乱。您可以编辑它以添加更多细节吗?我注意到您已使用 AWS Step Functions 标记了您的问题 - 这是您尝试使用的服务吗?
  • 嗨@fedonev,我已经用 Sample 更新了这个问题。

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


【解决方案1】:

我的理解:您的输入是一个或多个事件的地图。每个事件都有一个类型和状态。每种类型都有自己的一组任务。如果事件的状态为ACTIVE,则执行其类型的任务。

解决此问题的一种方法是在您的选择状态前插入一个Map state。地图为每个运行一次您的选择状态 输入数组的元素。每个 Choice 状态调用的输入都是来自数组的单个事件。

Map 接受一个array,所以你需要将你的map-of-events 输入转换成一个array-of-events。如果您无法在状态机执行之前将输入转换为数组,则放置在 Map 前面的 Lambda 任务可以完成这项工作。

【讨论】:

    猜你喜欢
    • 2019-07-06
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 2017-07-12
    相关资源
    最近更新 更多