【Lambda】日付を取得したらUTCだった…。

はじめに

前回の記事、「datetimeで正しい日時の取得ができない」でLambdaでdatetimeを使うときはlambda_handler内で宣言をしよう。という話をしました。

前回で正常に日時が取得できるようになった!!

と思いきや取得した日付をよく見ると日本時刻ではありませんでした。

今回はLambdaで日本時刻を取得し、表示できるようにしていきたいと思います。

コード

import datetime

def lambda_handler(event, context):
    date = datetime.datetime.now()
    print(date)

実行結果

2019-03-11 05:27:53.253842

このときの実際の時刻は14時27分でした。

原因

原因は現在の日時を取得する時に、Lambdaでは東京リージョン(ap-northeast-1)でもタイムゾーンはUTCであるため、日時もUTC時刻になってしまうことにありました。

対処法

LambdaのタイムゾーンをUTCからJST(東京)に変更します。

Lambdaの関数コードの下に環境変数を設定できるところがあるのでそこでタイムゾーンを設定していきます。

下の画像のようにキーにTZ、値にAsia/Tokyoと入力して保存してください。

これだけでタイムゾーンの設定は完了です。

実行結果

2019-03-11 14:28:31.230367

日本時刻で表示することができました。

さいごに

Lambdaでは環境変数を設定することで非常に簡単にタイムゾーンを変更することができるとわかりました。Lambdaで日時を使うときはタイムゾーンにも気を付ける必要がありそうです。