AWS lambdaのローカルデバッグでStripe APIがタイムアウトする問題の解決策

StripeのWebhookエンドポイント用のAWS lambdaファンクションをsam localでデバッグした際にタイムアウトエラーが発生したため、その対応についての備忘録。


問題

sam localでStripeのWebhookエンドポイントのlambdaファンクションをデバッグする際、予め用意しておいたStripeイベントデータをpayloadとして利用すると、stripe.Webhook.construct_event()の呼び出しで

Timestamp outside the tolerance zone (xxxxx)

のようなタイムスタンプが許容範囲外(タイムアウト)である旨のエラーが発生する。


原因

construct_event()のタイムスタンプ誤差の許容範囲がデフォルトではDEFAULT_TOLERANCE(300秒)になっているため、予め用意しておいたイベントデータを使用すると容易にタイムアウトしてしまう。

Stripe APIのWebhookクラスの定義:
file


対応

デバッグ時はconstruct_event()toleranceパラメータにタイムアウトにならない値を設定する(例では9999999秒)。

この設定が運用環境で行われないように十分ご注意ください(At your own risk)。
stripe_event = stripe.Webhook.construct_event(
    payload=payload,
    sig_header=sig_header,
    secret=stripe_webhook_secret,
    tolerance=9999999
)


以上です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする