🙆‍♀️

Lambdaでdatetimeを定義するとき

2023/12/15に公開

datetimeをglobalで定義してはいけない。

lambda_handler以下に定義

from datetime import datetime, timezone, timedelta

# このように定義するとlambdaのインスタンスの実行時間によって値が変わらない
now_jst = datetime.now(jst)

# 代わりにlambdaタイプをつける
now_jst = lambda: datetime.now(jst)
    
# UNIXタイムスタンプをミリ秒単位で取得
unix_timestamp_ms = int(now_jst.timestamp())

# JSTタイムゾーンを設定(UTC+9)
jst = timezone(timedelta(hours=+9))

def lambda_handler(event, context):

    # もしくはhandlerの中で実行する
    now_jst = datetime.now(jst)
    
    return {
        'current_timestamp': unix_timestamp_ms
    }

Discussion