Airflow 1 系で設定されている環境変数を JSON ファイルとして GUI を使って書き出す方法の続報です。
前回、Airflow CLI からでも環境変数を JSON ファイルとして出力できる1が、手元から実行しても GCP 上のインスタンスにしか保存されなかったので諦めたと書きました。 ですが、その問題を解決できたので、解決方法を公開しておきます。
Cloud Storage に格納されるデータ | Cloud Composer | Google Cloudによると、Cloud Composer インスタンス内部のディレクトリは GCS にマッピングされているらしい。
マッピング関係は以下( GCP のドキュメントをそのまま引用)
フォルダ | Storage パス | マッピングされたディレクトリ | 説明 |
---|---|---|---|
DAG | gs://bucket-name/dags | /home/airflow/gcs/dags | 環境の DAG を保存します。このフォルダ内の DAG のみが環境にスケジュールされます。 |
プラグイン | gs://bucket-name/plugins | /home/airflow/gcs/plugins | カスタム プラグインを保存します。カスタムのインハウス Airflow 演算子、フック、センサー、インターフェースなどです。 |
データ | gs://bucket-name/data | /home/airflow/gcs/data | タスクが生成して使用するデータを保存します。このフォルダは、すべてのワーカーノードにマウントされます。 |
ログ | gs://bucket-name/logs | タスクの Airflow ログを保存します。ログは Airflow ウェブ インターフェースでも利用できます。 |
それを使えば、/home/airflow/gcs/data
にファイルを保存すれば、CloudComposer が保有している GCS の gs://bucket-name/data
にアクセスすれば、そのファイルが参照可能になる。
実際に以下のようなコマンドを実行したところ、gs://bucket-name/data
からファイルを参照できました。
めでたい 🎉
|
|
これで前回紹介したアプローチの欠点である GUI での操作に依存せず、CLI で完結してファイルを作成できるようになったのでミスも減りますね。 このディレクトリと GCS のマッピング機能を考えた人は、頭いいなと思いました。
まず CloudComposer を GCP 上で提供する上で DAG の同期のためにマッピング機能は不可欠なので、最初からこの機能があるんじゃないかと考えるべきでしたね… 反省
See Also
- Airflow 1系で設定されている環境変数を JSON ファイルとしてGUIを使って書き出す方法
- CloudComposer のDAGをCircleCIで更新する
- GCPのCloud Composer のDAGを素早く・簡単にデバッグする
- OSS の Google BigQuery UDF `bqutil.fn` を使えば UDF の独自実装を置き換えられるかもしれない
- Google Cloud Pub/Sub に公開された結果はDataflow template を使えばめちゃくちゃ簡単に確認できる