🦝
Lambdaのタスク実行中に実行可能な残り時間を確認する
状況
- AWS Lambda関数でPythonのスクリプトを実行したい。
- 処理には長い時間がかかることが見込まれており、実行時間上限の15分以内には完了しない場合がある。
- 残り時間が短くなったら適当に返り値を生成し、lambdaの処理を正常に完了させたい(実行時間超過でのエラーにより落としたくない)
対策
handlerの関数の引数であるcontext
から、関数の実行可能な残り時間を取得することができるので、この値を元に分岐させる。
def main(event: dict, context) -> str:
# context.get_remaining_time_in_millis()で残り時間msを取得できる
print(context.get_remaining_time_in_millis())
# 残り時間が300秒未満だったら分岐
if context.get_remaining_time_in_millis() < 300_000:
pass
# 別の関数に渡して同様に使用することも可能
process(link_set, url, context)
参考
Discussion