2017-07-18 89 views
2

设置AWS步骤函数:在Lambda异常时,获取原始输入?

我有一个AWS状态机。我有一个可能会返回结果的Lambda,或者可能会抛出异常。该步骤具有一个定义的catch块,并根据异常的类型,遵循不同的执行路径。

的问题

不过,我想存储拉姆达的输入失败,以便它可以在以后重新应用。

失败的Lambda的输出是例外。

我已经试过

添加OutputPath和ResultPath当它是一个例外,不适用。

我真的不想总是抛出自定义异常并附加json输入,然后通过异常消息进行解析。

我试过使用并行,发送输入到我的Lambda和通过。然后结果是一个包含Lambda输出(成功的输出或异常)和原始输入的数组。但是,现在我需要添加一个Choice来检查是否有异常,然后继续执行成功的输出或使用原始输入分支。我似乎无法在Choice中定义JsonPath,以检查数组的第一个元素中是否存在“Error”。

回答

6

您可以使用ResultPathCatch子句中执行此操作,该子句将异常输出置于原始输入下的特定路径中。

例如:

"Catch": [{ 
    "ErrorEquals": ["States.ALL"], 
    "Next": "NextTask", 
    "ResultPath": "$.error" 
}] 

与输入

{"foo": "bar"} 

在例外的情况下,会产生输出等:

{ 
    "foo": "bar", 
    "error": { 
    "Error": "..." 
    } 
}