Передача данных в пошаговую функцию catch - PullRequest
1 голос
/ 12 марта 2019

Я использую пошаговые функции в AWS.Рассмотрим конечный автомат, состоящий из лямбд:

"StartAt": "Metadata",
              "States": {
                    "Metadata": {
                    "Type": "Task",
                    "Resource": "${metadataArn}",
                    "Next": "StoreMetadata",
                    "Retry" : [
                            {
                                "ErrorEquals": [ "States.All" ],
                                "IntervalSeconds": 2,
                                "MaxAttempts": 3
                            }
                    ],
                    "Catch": [
                        {
                            "ErrorEquals": [ "States.All" ],
                            "Next": "ErrorHandler"
                        }
                    ]
                  } ...
                      ...

Как передать определенные данные в «ErrorHandler».Например, шаг, который не удался, возможно, часть данных.Я использую nodejs, но могу экстраполировать на любое время выполнения.

Например, в узле у нас может быть лямбда, где:

module.exports.handler = async input => {
  const ids = JSON.parse(input).ids
  // try to read in data for ids.
  // read fails / throws exception
}

Как мне обработчик ошибок получить массив идентификаторовчтобы я мог пометить их как неудачные?если этот «ErrorHandler» является ловушкой для нескольких шагов, как я могу узнать, какие шаги завершились неудачно?

1 Ответ

0 голосов
/ 12 марта 2019

Я нашел ответ, вы можете использовать ResultPath для передачи исходного ввода вместе с ошибкой.Я полагаю, что я включу шаг как свойство во все входные данные, чтобы я мог знать, какой шаг не удался.См. документы для объяснения.По сути, для этого вам нужно просто добавить свойство ResultPath следующим образом:

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