有一种方法可以直接处理States.StringToJson整数函数的结果。
目前,在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的pass流中进行,错误输出在$.error路径中。
$.error由错误类型和作为escapedJson字符串的原因组成。
"error": {
"Error": "States.TaskFailed",
"Cause": "{\"ExecutionArn\":\"otherfunctionarm:executionid\",\"Input\":\"foooooo\"}"
}有任何方法只从这个输入中提取ExecutionARN吗?在我的pass步骤中,我将原因路径转换为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通流,首先转换输出,然后形成。
发布于 2022-11-28 20:19:53
我也有过类似的问题。
我所做的是创建一个任务,使用StringToJSON将原因放入新的path参数中。我将该任务作为下一个错误,然后从该错误调用后续任务。
使用变量名称和值:
在捕获中,将下一个从StatusStepFunctionFailed更改为parseErrorCause
那么parseErrorCause是这样的:
"parseErrorCause": {
"Type": "Pass",
"Parameters": {
"Result.$": "States.StringToJson($.error.Cause)"
},
"ResultPath": "$.parsedJSON",
"Next": "StatusStepFunctionFailed"
},和StatusStepFunctionFailed访问
"Variable": "$.parsedJSON.Result.Input",去找富多
https://stackoverflow.com/questions/73681134
复制相似问题