こんにちは。
技術課の山本です。
そろそろ雪が恋しいです。
Amazon MWAA を使用しているとき、DAGファイル内の"start_date"や"end_date"を日本時間で設定したいことがあると思います。
また、出力ログも可能な限り、日本時間の方がログを探す時にも便利です。
公式ドキュメントにタイムゾーンの変更方法の記述があったので、実際に試して、どこが日本時間になるのか見てみました。
参考:Amazon MWAA で DAG のタイムゾーンを変更する
今回は MWAA の v2.2.2 で検証しています。
Amazon MWAA のタイムゾーンを東京に変更する。
1. DAGを実行する時のタイムゾーンを東京に変更する。
以下に、DAGファイルの例を記載します。
pendulum というライブラリをインポートして local_tz 変数に東京のタイムゾーン情報を格納します。4〜7行目です。
DAGファイル内の"start_date"や"end_date"で時間を設定する際に、tzinfo に local_tz 変数を指定します。 11行目です。
これで "start_date"や"end_date"を日本時間で指定できるようになります。11行目は日本時間で指定しています。
from airflow import DAG from airflow.operators.bash_operator import BashOperator from datetime import datetime, timedelta # pendulum ライブラリを Import する。 import pendulum # local_tz 変数にタイムゾーン情報(Asia/Tokyo)を格納する。 local_tz = pendulum.timezone("Asia/Tokyo") default_args = { "owner": "tetsuya_yamamoto", "depends_on_past": False, "start_date": datetime(2022, 9, 7, hour=21, minute=11, second=0, microsecond=0, tzinfo=local_tz), # tzinfo に local_tz 変数を指定する。
上のDAGを登録すると、UTC 時間の12時11分、すなわち 日本時間(JST)の21時11分にスケジュールされています。
なお、Airflow の管理画面の時間表示も、日本時間にできます。以下の画面を参考にしてください。管理画面の右上に設定ボタンがあります。
DAG実行ログ(タスクログ)のタイムゾーンも変わっています。
タイムゾーンが変わっています。
2022/09/28 追記。注意事項。
Airflow の 管理画面の時間表記を 日本時間に変更すると、JSTで出しているログの時間に更に9時間追加されるようです。
おそらく Airflow のバグなのでは、と考えています。 Airflow のリポジトリ に Issue を起票する予定です。
→ v2.3.4rc1 以降では修正されているようです。Amazon MWAA でも、今後バージョンアップのタイミングに修正されるでしょう。Webserver shows wrong datetime (timezone) in log #23796
ちなみに、Airflow の 管理画面の時間表記が UTC の時には、ログは 日本時間になっています。ただし、末尾に "UTC" と表示が出ています。
2. Amazon MWAA の Web Server(管理画面) から出力するログのタイムゾーンを変更
Web Server (管理画面)から出力するログは Cloud Watch Logs に 「MWAAの環境名-WebServer」という形で出力します。
以下2つのファイルを用意します。
- __init__.py
- 中身は空で大丈夫です。
- dag-timezone-plugin.py
import time import os os.environ['TZ'] = 'Asia/Tokyo' time.tzset()
上の2ファイルを plugins.zip という zip ファイルに圧縮します。
plugins.zip |-- __init__.py |-- dag-timezone-plugin.py
zip ファイルを Amazon MWAA の S3 バケットにアップロードします。
aws s3 cp plugins.zip s3://<MWAAのバケット>/
Amazon MWAA の環境にプラグインファイルを追加します。
plugins.zip を追加します。
「更新中」から「利用可能」になるのを待ちます。
Amazon MWAA の Web Server から出力するログのタイムゾーンを変更できました。
まとめ
公式ドキュメントに沿うと、以下を日本時間に変更可能でした。
- DAGファイルの"start_date"や"end_date"で設定する時間
- DAG実行ログ(タスクログ)
- Web Server(管理画面) から出力するログ
他のログについては、日本時間に変更する術はなさそうです。
山本 哲也 (記事一覧)
カスタマーサクセス部のエンジニア。2024 Japan AWS Top Engineers に選んでもらいました。
今年の目標は Advanced Networking – Specialty と Machine Learning - Specialty を取得することです。
山を走るのが趣味です。今年の目標は 100 km と 100 mile を完走することです。 100 km は Gran Trail みなかみで完走しました。残すは OSJ koumi 100 で 100 mile 走ります。実際には 175 km らしいです。「草 100 km / mile」 もたまに企画します。
基本的にのんびりした性格です。座右の銘は「いつか着く」