AWS

【AWS】 StepFunctionsがUnable to execute HTTP request: connection timed outでエラーになった時の解決策

aws記事のアイキャッチ
hama-matcha

はじめに

いつもなら動いていたStepFunctionsが唐突にUnable to execute HTTP request: connection timed out: cloudformation.[aws_region].amazonaws.com/[public_ipv4]:443で動かなくなり焦りながら修正したのでその備忘録です。

まとめ

States.TaskFailed等をトリガーとして各Stateに再実行の設定をしよう

StepFunctionsのWorkflow Studioで設定

stepfucntionsの設定
stepfucntionsの設定

StepFunctionsのJsonに記述

"Retry": [
  {
    "ErrorEquals": [
      "States.TaskFailed"
    ],
    "BackoffRate": 1,
    "IntervalSeconds": 20,
    "MaxAttempts": 60,
    "Comment": "Unable to execute HTTP request対策"
  }
]

どんなシステムだったか

CloudFormationを使い必要なAWSリソースとツールをインストールしてLambda関数(Python3.9)を使いboto3のssmクライアントで色々実行するサーバを作ってました。今まではCloudFormationのリソースの作成が完了するStateだけ再実行する設定を入れていた。

IntervalSeconds(再実行の間隔)とMaxAttempts(最大試行回数)の設定

動くことを優先した設定

  • 再実行の間隔(IntervalSeconds):20~30秒
  • 最大試行回数(MaxAttempts): 60回

上記の設定は1つのStateで 20~30秒 x 60 = 1200~1800秒 動かなかったら明らかにおかしいと判断して設定しました。(この値の設定は各Stateで普段どのくらい時間をかけているのか確認する必要があります。)

さいごに

StepFunctionsは便利なツールですが、各Stateでどこかと通信をしている場合は各Stateに再実行の設定を入れておくのが無難だと思います。(ログで失敗の履歴が追う際にも助けになるかもです。)
エラーで探してもあまり引っ掛かりがなく解決策で悩んでいたので誰かの助けになると幸いです。

以上hamaでした〜

_hama
_hama
ほのぼのデータエンジニア
記事URLをコピーしました