В AWS Lambda Exception Handle не добавлены пользовательские свойства
Я создаю конечный автомат в AWS. В первом состоянии (лямбда), если выдается исключение, оно перехватывается и передается другой лямбде для обработки. При создании исключения я создал пользовательский класс, унаследованный от класса Exception и имеющий свойство bool. Свойство установлено, но когда результат получен, у него нет свойства.
public class CustomException : Exception
{
private bool isReprocessed;
public CustomException(String message) : base(message)
{ isReprocessed = true; }
}
Выход лямбды -
{
"errorType" : "CustomException",
"errorMessage": "Custom Exception thrown.",
"stackTrace": [
"at lambdaProcessingFromStepFunction.Function.FunctionHandler(Object input, ILambdaContext context)",
"at lambda_method(Closure , Stream , Stream , ContextInfo )"
],
"cause": {
"errorType" : "CustomException",
"errorMessage" : "Custom Exception thrown.",
"stackTrace" : [
"at lambdaProcessingFromStepFunction.Function.FunctionHandler(Object input, ILambdaContext context)"
]
}
}
1 ответ
В AWS есть слой, который форматирует все исключения при передаче между разными лямбдами или при переходе в cloudWatch. Как и в большинстве фреймворков, когда вы выкидываете ошибку, она разбирается в общий формат, если вы покидаете среду, в которой она была создана. Есть несколько опций, вы можете перехватить все исключения в самой лямбде, а затем сериализовать их для любого объекта, который вы хочу. Или вы можете поместить дополнительную информацию в сообщение, а затем на другом конце проанализировать сообщение (представьте коды ошибок).
https://docs.aws.amazon.com/lambda/latest/dg/dotnet-exceptions.html
Другой вариант - если не так много разных случаев, вы можете просто иметь исключения с разными именами. Итак, у вас есть одно исключение CustomException, а другое - CustomExceptionReprocessed, а затем на конечном компьютере вы можете связать обработчики с конкретными именами исключений.