A) Вы можете использовать состояние Pass
, однако оно очень ограничено (и вы получите тот же эффект, если использовать InputPath
в состоянии Task
). Можно добавить дополнительное состояние Task
, которое преобразует состояние выполнения во входные данные следующего Task
. В любом случае, я бы предложил спроектировать лямбда-функции так, чтобы они могли просто считывать данные выполнения как есть (поэтому он просто извлекал бы из них необходимые поля, игнорировал другие и выдавал ошибку, если обязательное поле отсутствует).
Я не скажу, что это рекомендуемая практика. На самом деле я не нашел ни одной рекомендуемой практики по этому вопросу. Однако этот метод работает в моем случае, и если любая реализация Task
(будь то Lambda или Activity) совместно используется несколькими конечными автоматами, то эти конечные автоматы достаточно похожи, так что их модель данных очень похожа (таким образом, Lambda работает для обоих конечных автоматов) .
B) Структура конечного автомата является частью проекта, поэтому она версионируется вместе с остальной частью кода. Используя YAML в шаблонах Cloud Formation, его JSON можно легко внедрить в виде многострочной строки. В моем случае он также находится внутри Fn::Sub
, поэтому при развертывании можно автоматически установить ARN ресурсов (Lambda, Activities).