Отправлять входные данные как выходные данные при ошибке для пошаговой функции AWS

Я бы хотел, чтобы мой конечный автомат продолжал выполнение даже в случае какой-либо ошибки состояния на ранней стадии. Большинство моих лямбда-функций выводят то же самое, что они принимают в качестве входных данных, поэтому я хотел бы иметь возможность просто передать входные данные, которые лямбда-функции, обнаружившие ошибку, в качестве выходных данных для следующего состояния. Я пытался

{
    "DeleteStuff": {
      "Type": "Task",
      "Resource": "MY_ARN",
      "Catch": [ {
        "ErrorEquals": ["States.ALL"],
        "ResultPath": "$InputPath",
        "Next": "FailedState"
      }],
      "Next": "checkStuff"
    }, ...

без везения. Кто-нибудь делал это или может кто-нибудь предложить помощь?

Спасибо!


person naesmanak    schedule 27.02.2018    source источник


Ответы (2)


Итак, решение - установить для ResultPath значение null. Изменение моей государственной машины на

{
    "DeleteStuff": {
      "Type": "Task",
      "Resource": "MY_ARN",
      "Catch": [ {
        "ErrorEquals": ["States.ALL"],
        "ResultPath": null,
        "Next": "FailedState"
      }],
      "Next": "checkStuff"
    }, ...

дал мне желаемое поведение.

person naesmanak    schedule 27.02.2018

если вы просто добавите новый путь к пути результата, он будет добавлен во входные данные:

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

поэтому, если ваш ввод был:

{
    "data_a" : "aaa",
    "data_b" : "bbb"
}

вывод будет:

{
    "data_a" : "aaa",
    "data_b" : "bbb",
    "error" : "<error description>"
}
person daTobi    schedule 23.05.2018