LoginSignup
9

More than 3 years have passed since last update.

Cloud Composer 向けの DAG ファイルの Syntax チェックをローカルで実行する

Last updated at Posted at 2019-07-20

いちいち gcloud composer environments storage dags import して web ui から確認していると日が暮れるので、手元で syntax チェックぐらいはしてから動作確認できるようにしてみた。

Docker イメージのビルド

Airflow の docker イメージは https://github.com/puckel/docker-airflow にあった。

Composer 向けに google クライアントなどをいれる必要があったのでカスタム用の Dockerfile を自分で用意した。

Dockerfile
# ref. https://github.com/puckel/docker-airflow

FROM puckel/docker-airflow:latest

USER root

# Install additional packages required by composer
RUN pip install google-cloud-bigquery \
      google-cloud-storage \
      google-cloud-container \
      google-api-python-client \
      grpcio \
      kubernetes \
      pandas_gbq

# Install additional packages required by us
RUN pip install "slackclient<2.0.0"

USER airflow
docker build --rm -t docker-airflow-custom .

Airflow の起動

単純に起動してみると GOOGLE_DEFAULT_APPLICATIONSGOOGLE_CLOUD_PROJECT が欲しいと言われるので、その辺りを設定しつつ、dags ファイルをおいているディレクトリをマウントして airflow を起動。

Web UI が立ち上がる(が、そこは本質ではなく、DBの初期化をした状態で置いておきたいだけ)

docker run -p 8080:8080 -e GOOGLE_CLOUD_PROJECT=<YOUR_PROJECT> \
  -v $HOME/.config:/usr/local/airflow/.config \
  -v <YOUR_DAGS_DIR>:/usr/local/airflow/dags \
  --rm -it docker-airflow-custom

FYI: デーモンとして起動したい場合は -d オプションをつけてください。
FYI: Airflow サーバ起動時にも1発 Syntax チェックは走ります。

DAGのSyntaxチェック

あとは起動したコンテナに入って /entrypoint.sh python で dag の python スクリプトを叩けば Syntax チェックになる。

docker exec -it $(docker ps | grep docker-airflow-custom | awk '{print $1}') \
  /entrypoint.sh python -W ignore::UserWarning dags/<YOUR_DAG.py>

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9