在States.StringToJson函数中进行选择



有没有一种方法可以直接处理States.StringToJson函数的结果?

目前在一个step函数中,我试图处理来自另一个同步step函数调用的错误:

"OtherStepFunction": {
"Type": "Task",
"Resource": "arn:aws:states:::states:startExecution.sync:2",
"Parameters": {
"StateMachineArn": "otherstepFunctionCall",
"Input.$": "$"
},
"End": true,
"Catch": [
{
"ErrorEquals": [
"States.ALL"
],
"Comment": "OtherStepFunctionFailed",
"Next": "StatusStepFunctionFailed",
"ResultPath": "$.error"
}
]
},

所有错误都在名为StatusStepFunctionFailed的过程流中,错误输出在$.error路径中。

$.error由错误类型和作为escapedJson字符串的原因组成。

"error": {
"Error": "States.TaskFailed",
"Cause": "{"ExecutionArn":"otherfunctionarm:executionid","Input":"foooooo"}"
}

是否有任何方法可以从该输入中仅提取ExecutionARN?在我的pass步骤中,我将Cause路径转换为json,但我没有找到直接选择ExectionARN部分的方法。以下内容:

"reason.$": "States.JsonMerge($.error.Cause).ExecutionArn"

返回The value for the field 'reason.$' must be a valid JSONPath or a valid intrinsic function call (at /States/HandleResource/Iterator/States/StatusStepFunctionFailedHandleJSON/Parameters)

我目前的解决方法是使用2遍流,首先转换输出,然后格式化。

我也遇到了类似的问题。

我所做的是创建一个任务,使用StringToJSON将Cause放入一个新的路径参数中。我将该任务作为错误中的下一个,然后调用该错误中的后续任务。

使用变量名称和值:

在Catch中,将Next从StatusStepFunctionFailed更改为parseErrorCause

然后parseErrorCause是这样的:

"parseErrorCause": {
"Type": "Pass",
"Parameters": {
"Result.$": "States.StringToJson($.error.Cause)"
},
"ResultPath": "$.parsedJSON",
"Next": "StatusStepFunctionFailed"
},

StatusStepFunctionFailed访问

"Variable": "$.parsedJSON.Result.Input",

获取foooooo

最新更新