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



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

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

{
"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)

step函数在没有时间戳匹配的情况下更新,因此,我怀疑这段代码。。你猜得到了吗?

编辑(2021年6月8日(:

比较–指定要比较的输入变量的两个字段,比较的类型以及将变量与之进行比较的值。选择规则支持两个变量之间的比较。在选择范围内规则,变量的值可以与中的另一个值进行比较通过将Path附加到支持的比较的名称而输入的状态操作员。来源:AWS文档

它明确指出可以比较两个变量,但没有用。仍在尝试:(

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

以下代码有效:

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

我想再次提请你注意">路径";单词这就是魔术!

看起来您确实从下面链接的线程中找到了解决最初挑战的方法。

使用amazon步骤函数,我如何编写一个引用当前时间的选择运算符?

然而,我认为您想要将$.staleInputVariable与当前时间戳进行比较,并且我不愿意认为您必须配置lambda函数(并对其进行测试!(才能做到这一点。

如果是这样的话,只需使用Context Object或$$.:就可以实现这一点

{
"Variable": "$$.State.EnteredTime",
"TimestampEqualsPath": "$.staleInputVariable"
}

最新更新