AWS Step Function NumericGreaterThan 参数

AWS Step Function NumericGreaterThan a Parameter

在 AWS Step Function 的 Choice 步骤中,我们想要将 AWS Lambda 函数的结果与使用 "NumericGreaterThan" 作为参数给出的阈值进行比较。

在我们的示例中,我们将 lambda 的计算值与事件给出的阈值进行比较。

我尝试按以下方式定义我的步进函数:

{
  "StartAt": "Check Enough Data",
  "States": {
    "Check Enough Data": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:REGION:ID:function:FUNCTION:$LATEST",
      "Next": "Validate Count",
      "ResultPath": "$.count"
    },
    "Validate Count": {
      "Type": "Choice",
      "Choices": [
        {
          "Variable": "$.count",
          "NumericGreaterThan": "$.threshold",
          "Next": "Succeed State"
        }
      ],
      "Default": "Wait 24 Hours"
    },
    "Wait 24 Hours": {
      "Type": "Wait",
      "Seconds": 86400,
      "Next": "Check Enough Data"
    },
    "Succeed State": {
      "Type": "Succeed"
    }
  }
}

但出现错误类型的预期值:整数、浮点数而不是字符串。 如果我用硬编码值(如 20)替换“$.threshold”,它可以工作,但该值不是我想要的动态值。

以下输入应使 lambda 进入成功状态:

{
   "country": "japan",
   "threshold": 40
}

我知道我们可以用另一个 Lambda 函数替换 Choice 步骤,但从成本效益的角度我们不想这样做。

有人知道如何解决这个问题吗?

比较运算符需要在“:”后有一个整数。不能是字符串。

解决方法是将 "Variable": "$.count" 更改为 "Variable": "$.count/$.threshold",这样您就可以获得 "NumericGreaterThan": 1。 在这种情况下,您有定义 Choice 操作的计数和阈值。

如果这能解决您的问题,请告诉我

精度:"Variable": "$.count" 变为 "Variable": "$.ratio" 其中 ratio = count/threshold

您可以根据文档使用 'NumericGreaterThanPath' 运算符 https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-choice-state.html

在选择规则中,通过将 'Path' 附加到支持的比较运算符的名称,可以将变量的值与状态输入中的另一个值进行比较。

NumericEqualsPath、NumericGreaterThanPath、NumericGreaterThanEqualsPath 等