У меня есть async
лямбда-функция.Любое исключение, возникающее внутри лямбда-функции, переносится как AggregateException
.Поэтому, если конечный автомат вызывает эту лямбду, он получает ее как AggregateException
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]
namespace MyFunction
{
public class MyHandler
{
public Payload DoWork(Payload payload, ILambdaContext context)
{
throw new MyCustomException("This is test");
}
}
}
ниже мой конечный автомат
{
"StartAt": "DoWork",
"States": {
"DoWork":{
"Type":"Task",
"Resource":"arn:aws:lambda:us-west-2:xxxxx:function:MyHandler:dev",
"Next":"OK",
"Catch": [
{
"ErrorEquals": [ "MyCustomException" ],
"Next": "HandleMyCustomException"
},
{
"ErrorEquals": [ "States.ALL" ],
"Next": "HandleAllErrors"
}
]
},
"HandleAllErrors": {
"Type": "Fail",
"Cause": "UnknownError",
"Error": "Unable to perform work."
},
"HandleMyCustomException":{
"Type":"Fail",
"Cause":"MyCustomError",
"Error":"An unknown error occurred while processing. Please check the logs."
},
"OK": {
"Type": "Pass",
"Result": "The request has succeeded.",
"End": true
}
}
}
, так как конечный автомат получает AggregateException
, а не MyCustomException
, он никогда не выполняется HandleMyCustomException
шаг
Как мы справимся с этим.Я использую .NET Core 2.0 для разработки лямбда-функции