恥ずかしながら最近になって知ったワークフローエンジン Apache Airflow。日本語の紹介記事もちらほら出てきていますが、公式ドキュメントをちょっとずつ抄訳しながら読んでいこうと思います。
17目の今回はコネクションとフック(Connections & Hooks)。
バージョン2.3.3時点のものです。
コネクションとフック(Connections & Hooks)
ワークフローはしばしば他システムとデータのやり取りをします。そのためAirflowは外部異ステムとやり取りするときに使用する認証情報の保管をする重要なオブジェクトとしてコネクション(Connection)を用意しています。
コネクションは、ユーザー名やパスワード、そしてホスト名といった、接続先システムによりさまざまなパラメーターのセットです。一意性のある名前、conn_id
を持ちます。
コネクションはWeb UIないしCLIで管理できます。コネクションを作成したり、編集したり、管理する方法については、コネクションを管理するを参照ください。コネクションの情報を保管する方法には複数の選択肢があり、カスタマイズもできます。
コネクションは、Pythonコードで直接利用したり、フックを通じて利用したり、テンプレートから利用したりできます。
echo {{ conn.<conn_id>.host }}
フック
フックは外部プラットフォームに接続するための高水準なインターフェースを提供します。フックのおかげでクイックかつ容易に外部とのやり取りが可能になります。低水準のコードで外部APIを呼び出したり特殊なライブラリを使用したりする必要はありません。フックはまたしばしばオペレーターの構成部品として利用されています。
これらのフックは認証方法を集約するためにコネクションを統合しており、しばしばデフォルトのconn_id
を持ちます。例えば、PostgresHook
はとくに指定されていない場合、postgres_default
というconn_id
を持つコネクションを参照します。
APIドキュメントでAirflowが提供するすべてのフックの一覧をご覧になれます。
カスタム・コネクション
独自のコネクション型を定義することもできます。これについてはプロバイダー・パッケージのページで詳細に説明されています。プロバイダーはあなたが独自のコネクションを定義するのを助けてくれます。コネクションのカスタマイズはいずれのプロバイダーでも可能ですが、コミュニティにより管理されているプロバイダーの多くが独自のコネクション型を定義しています。Airflowコミュニティが管理するすべてのプロバイダーの一覧はコネクションのページで確認できます。
コネクションを使ってごりごりコードを書くよりも、フックを使ってスマートに構築・保守できるDAGを書くようにすべし、と。
これまで見てきたタスクやオペレーターに関する説明の中でしばしばフックが登場するので気になっていました。それで今回このセクションを訳出してみました。