Yuta NakataのBlog

Python / AWS / ITについて役立つ情報を発信します

Step Functionsにて、次のStateに進めなかったエラーの話とその回避策について

謎エラーの概要

  • StepFunctionsにて発生したエラー
  • Lambda の処理が正常に完了した。が、次のStateに進むことができず。
  • エラー文としては、Timeoutと表記される
  • ただし、このエラーは一度きり確認されたのち、同様のエラーは見られませんでした

すなわち、謎エラーとしては直前のStateがうまくいったのにも関わらず、次のStateに進めなかった(しかも再発しなかった)ということです。

本件についてAWSのサポートに問い合わせた所、以下のような返信でした。

回避策

結論から申し上げると、AWSとしてもこのようなエラーはどうしても発生してしまう。そのため、リトライとタイムアウトを適切に設定してねということでした。

具体的には、ステートマシン定義のタスクに適切な TimeoutSeconds を設定し、一定時間内にで処理が終わらなければ、改めてリトライをかける処理をいれろとのことでした。

下記のような感じです。

"ActivityState": {
  "Type": "Task",
  "Resource": "arn:aws:states:us-east-1:123456789012:activity:HelloWorld",
  "TimeoutSeconds": 300,
  "Next": "NextState"
}

docs.aws.amazon.com

AWSの中のことはわからないので、Application側で適切な例外処理を入れなければいけないという学びになりました(そうはいってもエラーに遭遇しないとわからないエラーだよなぁ)。