Как работает атрибут MaxConcurrency для задачи «Карта» в пошаговых функциях AWS? - PullRequest
3 голосов
/ 24 сентября 2019

Обновление: Создание пошаговой функции из Состояние карты и пошаговый шаблон, который также вызывает ошибку.Это убедительное доказательство того, что атрибут MaxConcurrency вместе со значением Parameters не работает.

Я не могу успешно использовать атрибут MaxConcurrency в определении функции шага.

Это можно продемонстрировать, используя пример, приведенный в документации для задачи «Карта» (впервые с 18 сентября 2019 г.):

{
  "StartAt": "ExampleMapState",
  "States": {
    "ExampleMapState": {
      "Type": "Map",
      "MaxConcurrency": 2,
      "Parameters": {
        "ContextIndex.$": "$$.Map.Item.Index",
        "ContextValue.$": "$$.Map.Item.Value"
      },
      "Iterator": {
         "StartAt": "TestPass",
         "States": {
           "TestPass": {
             "Type": "Pass",    
             "End": true
           }
         }
      },
      "End": true
    }
  }
}

Выполнением функции шага со следующим вводом:

[
  {
    "who": "bob"
  },
  {
    "who": "meg"
  },
  {
    "who": "joe"
  }
]

Мы можем наблюдать в Истории событий выполнения , что получаем:

  • ExecutionStarted
  • MapStateEntered
  • MapStateStarted
  • MapIterationStarted (индекс 0)
  • MapIterationStarted (индекс 1)
  • PassStateEntered (индекс 0)
  • PassStateExited (индекс 0)
  • MapIterationSucceeded (индекс 0)
  • ExecutionFailed

Сбой функции шага.Шаг ExecutionFailed имеет следующий вывод (идентификатор выполнения пропущен):

{
  "error": "States.Runtime",
  "cause": "Internal Error (omitted)"
}

Попытка отловить ошибку с помощью шага Catch не имеет никакого эффекта.

Что я здесь не так делаю?Это ошибка?

1 Ответ

1 голос
/ 25 сентября 2019

Ответ на личный билет, отправленный в AWS сегодня утром;

Благодарим Вас за обращение в службу поддержки Premium AWS.Меня зовут Akanksha, и я буду помогать вам с этим делом.

Я понимаю, что вы работали с новой функцией состояния карты в пошаговых функциях и заметили, что когда мы используем параметры вместе с MaxConcurrency, для которого установлено более низкое значение, чем число итераций (только первая итерация прошла успешно)завершается с 'States.Runtime' и выглядит как ошибка с функционалом.

Спасибо за предоставленную информацию.Это помогло мне во время устранения неполадок.Чтобы подтвердить поведение, я использовал приведенный ниже пример конечного автомата с Pass:

{"StartAt": "Состояние карты", "TimeoutSeconds": 3600, "Состояния": {"Состояние карты": {«Тип»: «Карта», «Параметры»: {«ContextValue. $»: «$$. Map.Item.Value»}, «MaxConcurrency»: 1, «Iterator»: {«StartAt»: «Выполнить задачу», "States": {"Run Task": {"Type": "Pass", "End": true}}}, "Next": "Final State"}, "Final State": {"Type": "Pass "," End ": true}}}

Я протестировал несколько списков ввода и значения MaxConcurrency, ниже приведены мои наблюдения:

  1. Список размеров ввода: 4 MaxConcurrency: 1 /2/3 - Сбои и MaxConcurrency: 0/4/5 или выше - Работает
  2. Список размеров ввода: 3 MaxConcurrency: 1/2 - Сбой и MaxConcurrency: 0/3/4 или выше - Работает
  3. Аналогично, я выполнил тесты, удалив параметры и из конечного автомата, и увидел, что он работает, как и ожидалось, с различными значениями MaxConcurrency.
  4. Я также протестировал то же самое, изменив тип задачи:Pass»с„лямбда“и наблюдали такое же поведение.

Следовательно, я могу подтвердить, что конечный автомат дает сбой, когда у нас есть параметры в коде, и мы указываем значение MaxConcurrency как что-либо отличное от нуля или число, большее или равное размеру списка.

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

Между тем, если у вас есть какие-либо вопросы или проблемы, пожалуйста, дайте мне знать.

Хорошего вам дня!

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

...