AWS Lambda でのタイムゾーン変換

AWS運用自動化サービス「Cloud Automator」



はじめに

こんにちは、技術一課の山中です。

Python のタイムゾーンについて、学んだことを忘れないようにブログにまとめました。

Python の組み込みモジュールである datetime を利用して現在時刻を取得する場合、通常以下のように記載すると思います。

これを私のローカル PC で実行した結果は以下のとおりです。

同じものを AWS Lambda で実行してみると出力結果は以下のようになります。

同じコードを実行していてもかなり出力結果が異なります。

これは AWS Lambda の実行環境と私のローカル PC の実行環境とでタイムゾーンが異なることで起こります。

タイムゾーンの変換

AWS Lambda の実行環境におけるタイムゾーンは UTC ですが、出力時には JST タイムゾーンで出力したいケースがあります。

Python でのタイムゾーン変換は pytz モジュールで行います。

pytz は必要となるすべてのタイムゾーンの完全なデータベースを含んでいるので、任意のタイムゾーンに変換することが可能です。

これを私のローカル PC で実行した結果は以下のとおりです。

同じものを AWS Lambda で実行した結果以下のとおりです。

pytz は標準モジュールではないため、 AWS Lambda で利用する場合は、 zip でアップロードしてください。

おわりに

タイムゾーンを意識していないと結果が想定どおりに出ずあれ?となることが多くありますが、いつも「コード内での時間は常に UTC で扱い、表示する段階でローカル時間に変換する」を意識していればいいかなと思います。


AWS運用自動化サービス「Cloud Automator」