AWS StepFunctionsでsize exceeding the maximum number of characters service limitエラー

富松広太 2019年3月29日

先日、stepfunctionsで社内ツールを作成していたところ、
下記のエラーに遭遇しました。

エラー内容

The state/task ‘arn:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’
returned a result with a size exceeding the maximum number of characters service limit.

処理概要

処理は下記のようなシンプルなものです。

原因

エラーログからStepfunctionsの制限と考えられるので
調べてみたところ下記が原因のようでした
タスク、状態、実行の最大の入力または結果データサイズ:32,768 文字.
https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/limits.html#service-limits-task-executions
調べると、引き渡そうとした文字列が12万文字を超えていたため、タスクの受け渡しができなかった模様・・・・
ベストプラクティスでは、このような事態を回避するために、
S3とかに生データを格納して
次のタスクにメタデータのみを渡すことを推奨しています。
https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/avoid-exec-failures.html
また、S3の結果整合性を気にして、数秒間にwaitを挟み、
下記のようにしたところ正常に実行させることができました。
同じエラーでつまづいた方の参考になれば幸いです。