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

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

У меня есть три лямбда-функции 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.

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


person Vivek Sable    schedule 01.11.2018    source источник


Ответы (1)


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

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

person Marcin Sucharski    schedule 20.11.2018