AWS Lambdaのタイムゾーンを変更する(コード内での変更は反映されない)

AWS Lambdaのタイムゾーンを変更する(コード内での変更は反映されない):


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 と入力します。



lambda-tz.png


同じスクリプトを実行すると次のようにタイムゾーンの変更が反映されています。

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

コメント

このブログの人気の投稿

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-04-30 23:37:32 RSSフィード2021-04-30 23:00 分まとめ(42件)

投稿時間:2023-02-05 02:09:04 RSSフィード2023-02-05 02:00 分まとめ(9件)