Lambdaのタイムゾーン
AWS Lambdaでは 東京(ap-northeast-1)リージョンであっても タイムゾ-ンはUTCになります。
import datetime
import os
def lambda_handler(event, context):
now_dt = datetime.datetime.now()
print("TZ: {}".format(os.environ['TZ']))
print("now: {}".format(now_dt))
print("now_timestamp: {}".format(now_dt.timestamp()))
return 'Hello from Lambda'
TZ: :UTC
now: 2018-10-19 14:13:02.141871
now_timestamp: 1539958382.141871
タイムゾーンの変更方法
Lambda関数の設定にある「環境変数」で変更することができます。
キーに TZ
、値に Asia/Tokyo
と入力します。
同じスクリプトを実行すると次のようにタイムゾーンの変更が反映されています。
TZ: Asia/Tokyo
now: 2018-10-19 23:13:46.994964
now_timestamp: 1539958426.994964
コード内で TZ
環境変数を変えても変更は反映されない
「環境変数」ということで Pythonの os.environ
を書き換えてみましたが、タイムゾーンの変更が反映されませんでした。
Lambda関数の「環境変数」の設定を忘れた時の対策として別な方法を考えたほうが良いでしょう。
import datetime
import os
def lambda_handler(event, context):
default_tz = 'Asia/Tokyo'
if os.getenv('TZ', '') != default_tz:
os.environ['TZ'] = default_tz
now_dt = datetime.datetime.now()
print("TZ: {}".format(os.environ['TZ']))
print("now: {}".format(now_dt))
print("now_timestamp: {}".format(now_dt.timestamp()))
return 'Hello from Lambda'
実行結果を見ると TZだけが "Asia/Tokyo" になっています。
TZ: Asia/Tokyo
now: 2018-10-19 14:15:45.675777
now_timestamp: 1539958545.675777
参考
AWS Lambdaのタイムゾーン変更 - Qiita
https://qiita.com/nullian/items/39ecf1f6d0194b72e8e6
Python で環境変数の取得と追加 | TM Life
http://tmlife.net/programming/python/python-environ.html
16.1. os — 雑多なオペレーティングシステムインタフェース — Python 3.6.4 ドキュメント
https://docs.python.jp/3/library/os.html#os.putenv