エンジニア日記:AWS EventBridge・SQSでの関数呼び出しエラーテスト
やりたかったこと
下図のようなシステム構成のテストで、EventBridgeが要求関数を呼び出し時にエラーがあった場合とSQSが実行関数を呼び出し時にエラーがあった場合のテストを実施します。
最初はチーム内で机上確認にするという話が出ていましたが、ちゃんとどういう動作になるかテストすることになりました。
やったこと
エラーの出し方がわからず、調べたところ、↓に書かれている方法でうまくいきました。
EventBridgeのテストでは要求関数に、SQSのテストでは実行関数に、以下のコードを追記し、強制的に関数エラーを起こさせました。
print("例外を送出します。")
raise Exception
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
今回は期待通りに以下のように動いてテストOKでした。
・EventBridge
設定:非同期呼び出し>再試行を「2」
結果:3回実行されて処理中止(初回+再試行2回)
・SQS
設定:可視性タイムアウトを「15」分、メッセージ保持期間を「45」分
結果:3回実行されて処理中止(初回+15分後+さらに15分後)
まとめ
机上確認で済まさず、きちんとテストすることが大切だと反省しました。
以前SQSのメッセージ保持期間が「7」日になっており、とあるLambdaでタイムアウトエラーが出ていて翌朝まで15分起きに処理が開始されていて少しパニックになったことがありました。無限ループか!?と思いましたが、実際には「7」日間リトライされるという状態でした。おかげでSQSの設定について学ぶ機会になりました。
この記事が気に入ったらサポートをしてみませんか?