AWS Step 函数 - 选择步骤 - TimestampEquals 与多个输入变量匹配

问题描述

我一直在尝试使用充当规则引擎的选择步骤创建一个步骤函数。我想将一个日期变量(来自过时的输入 JSON)与我使用 lambda 函数生成的另一个日期变量进行比较。

AWS documentation 没有详细介绍时间戳比较器函数,但我假设它可以处理两个输入变量。这是代码的相关部分:

{
  "Variable": "$.staleInputvariable","TimestampEquals": "$.generatedTimestampusingLambda"
}

这是我在尝试更新 (!!!) stepFunction 时遇到的错误。我想强调一个事实,我什至无法调用 stepFunction,因为它在更新函数时失败。

Resource handler returned message: "Invalid State Machine DeFinition: 'SCHEMA_VALIDATION_Failed: String does not match RFC3339 timestamp at ..... (Service: AWsstepFunctions; Status Code: 400; Error Code: InvalidDeFinition; Request ID: 97df9775-7d2d-4dd2-929b-470c8s741eaf; Proxy: null)" (RequestToken: 030aa97d-35a5-a6a5-0ac5-5698a8662bc2,HandlerErrorCode: InvalidRequest)

stepfunction 在没有 Timestamp 匹配的情况下更新,因此,我怀疑这段代码......有什么猜想吗?

编辑(2021 年 6 月 8 日):

比较 - 指定要比较的输入变量的两个字段, 比较的类型,以及要与变量进行比较的值。 选择规则支持两个变量之间的比较。在选择范围内 规则,Variable 的值可以与来自的另一个值进行比较 通过将 Path 附加到支持的比较名称来输入状态 运营商。 来源:AWS docs

它明确指出可以比较两个变量,但无济于事。还在努力:)

解决方法

当我向我的一位同行解释这个问题时,我意识到 AWS 文档提到了一个 Path 后缀(我把它与 $. 混淆了)。这个 Path 需要添加到 operatorName 中。

以下代码有效:

{
  "Variable": "$.staleInputVariable","TimestampEqualsPath": "$.generatedTimestampUsingLambda"
}

再次提醒您注意“路径”这个词。这就是魔法!