Step Functions: Wait for Task token, Activity Flashcards

1
Q

В чём суть Wait for Task token?

Можно заставить Step Function задачу … перед дальнейшним выполнением.

Например, ….
Тогда выполнятся следующие шаги: …

A

дожидаться какого-то события
отправить сообщение в SQS

  • Отправка сообщения происходит ассинхронно
  • Через какое-то время Consumer poll’ит сообщение из SQS
  • После обработки сообщения Consumer отправляет запрос обратно в Step Function
  • Получив запрос от Consumer’а, Step Function продолжает выполнение
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Что такое Task Token?
Как он задействован в схеме “Wait for Task token”?
Он секретный?

A

Чтобы внешний сервис (SQS Consumer в данном случае) знал, какую Task’у ему запустить, то по всей этой цепочке вызовов нужно передать идентификатор Task’а.
Идентификатор задачи называется Task Token.
Он передаётся в MessageBody

Task Token ≠ secret token (ничего секретного нет, просто payload, event)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Как Step Function принимает информацию о необходимости продолжить работу?
Какая это может быть информация?
Какой API call используется?

A

Если SQS Consumer обработал сообщение

  • успешно, то он выполняет SendTaskSuccess API вызов
  • НЕ успешно, то - SendTaskFailure API вызов
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Где применим Wait For Task Token

A
  • Ассинхронная отправка сообщения в SQS (ждём, пока Consumer стянет и обработает сообщение)
  • Ждём Human Approval
  • Ждём завершения вызова 3-rd party системы или любого AWS сервиса
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Цель использования Wait For Task Token

A

Благодаря этому механизму при построении своей State Machine
мы можем выполнить вызов ВНЕШНЕЙ системы АССИНХРОННО.

Когда внешняя система закончит свою работу, то она уведомит наш State Machine
(уточнив при этом успешно ли выполнена работа).

И тогда State Machine продолжит выполнение с того же Task’а, на котором она остановилась.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Зачем нужен Activity? Кто может быть Activity Worker’ом?

A

Есть возможность выполнять продолжительную задачу на EC2 instance, Lambda.

Эти Activity Worker’ы будут poll’ить (спрашивать, какие) задачи через GetActivityTask API вызов.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Как происходит Уведомление о завершении работы?

A

После того, как Activity Worker выполнил задачу, он отправит response о своём успешном/failed выполнении через вызов SendTaskSuccess или SendTaskFailure API вызов.

Эти API вызовы также использует “Wait For Task Token” SQS Consumer

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Разница между Activity и “Wait for Task Token”?

A
  • Activity Worker сам PULL’ит Step Функцию. Он сам спрашивает, есть ли для него работа.
  • Step Функция PUSH’ит задачу в SQS очередь и даёт её callback (Wait for Task Token).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Параметры Activity Worker’а похожи на …
Например …

A

Конфигурация Activity Worker’а похожа на конфигурацию Consumer’а очереди.

  • TimeoutSeconds - максимально время, которое задача может быть в статусе in progress до того момента, как она будет считаться failed
  • HeartBeatSeconds - интервал времени, в течение которого Activity Worker должен слать запросы (SendTaskHeartBeat API call) о своей жизнеспособности.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Если HeartBeatSeconds установлен в 10 секунд, то …

A

Activity Worker может отчитываться, например, каждые 5 секунд

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Активность может занять до …, если TimeoutSeconds …, а Activity Worker …

A

Если TimeoutSeconds выбран очень долгим, и Activity Worker исправно шлёт HeartBeat отчёты, то Активность может занять до 1 года

How well did you know this?
1
Not at all
2
3
4
5
Perfectly