Как передать выходные данные предыдущей лямбда-функции в следующую лямбда-функцию, если текущая лямбда-функция не работает - PullRequest
0 голосов
/ 01 ноября 2018

Как передать вывод предыдущей лямбда-функции в следующую лямбда-функцию при сбое текущей лямбда-функции?

У меня есть три лямбда-функции L01, L02 и L03.

Ниже приводится мое определение функции шага :

{
  "Comment": "Recovery Plan",
  "StartAt": "L01",
  "States": {
    "L01": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:us-east-1:XXXXX:function:Lambda01",
      "Next": "L02"
    },

    "L02": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:us-east-1:XXXXX:function:lambda02",
      "Retry": [
        {
          "ErrorEquals": ["States.TaskFailed"],
          "IntervalSeconds": 1,
          "MaxAttempts": 3,
          "BackoffRate": 2
        }
      ],
      "Catch": [ {
      "ErrorEquals": [ "States.TaskFailed" ],
      "ResultPath":"$",
      "Next": "L03"
       } ],

      "Next": "L03"
    },
    "L03": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:us-east-1:XXXXX:function:lambda03",
      "End": true
    }
  }
}

Ниже приведены входы и выходы лямбда-функций :

Выход L01 равен

{
    "k01": "v01"
}

Ввод в L02 от L01, т.е.

{
    "k01": "v01"
}

Выход на L02 равен

{
    "k01": "v01",
    "k02": "v02"
}

Вход для L02 - от L01, т.е.

{
    "k01": "v01",
    "k02": "v02"
}

Выход L03

{
    "k01": "v01",
    "k02": "v02",
    "k03": "v03"
}

Моя лямбда-функция L02 не работает. Я хочу выполнить конечный автомат также в случае сбоя. Я хочу передать ввод функции L02 на вход функции L03, когда L02 не работает, и хочу добавить одну клавишу как error со значением custom error.

Может кто-нибудь мне помочь?

1 Ответ

0 голосов
/ 20 ноября 2018

Укажите ResultPath свойство в перехватчике ошибок. По умолчанию это $ (и вы указываете это явно), что означает, что вывод сбойного состояния будет только информацией об ошибке (с кодом и необязательной причиной). Однако, если вы установите ResultPath в Catcher, например, $.error_info, тогда вы сохраните состояние, и данные об ошибках будут доступны в свойстве error_info (другие свойства не будут изменены).

Для более подробной информации вас может заинтересовать https://docs.aws.amazon.com/step-functions/latest/dg/concepts-error-handling.html (Обработка ошибок).

...