Amazon MWAA で Apache Airflow をマネージドに運用 - DAG の設計とワークフロー自動化

MWAA による Airflow 環境の構築、DAG の設計、S3 連携、オペレーターの活用を解説します。

MWAA の概要

MWAA は Apache Airflow 2.x をマネージドに実行するワークフローオーケストレーションサービスで、最大 25 ワーカーまでスケールします。Step Functions がイベント駆動の状態遷移に適しているのに対し、Airflow はスケジュールベースの複雑なデータパイプライン (ETL、ML パイプライン、レポート生成) に適しています。

DAG と AWS オペレーター

DAG は Python で定義し、タスク間の依存関係を >> 演算子で記述します。extract >> transform >> load のように直感的にパイプラインを構築します。S3 の dags/ フォルダに Python ファイルをアップロードすると自動的にスケジューラーに登録されます。AWS オペレーターは EcsRunTaskOperator で ECS タスクを実行、LambdaInvokeFunctionOperator で Lambda を呼び出し、GlueJobOperator で Glue ジョブを起動するなど、AWS サービスをタスクとして組み込みます。

環境設計とプラグイン

MWAA 環境はクラスサイズ (mw1.small 、 mw1.medium 、 mw1.large) でワーカーのリソースを選択します。最小・最大ワーカー数を設定し、 DAG の並列実行数に応じて自動スケーリングします。 requirements.txt で Python パッケージを追加し、 plugins.zip でカスタムオペレーターやフックを配置します。 S3 バケットに DAG ファイルをアップロードすると自動的に環境に反映されます。 Airflow の Web UI はプライベートまたはパブリックのネットワークアクセスモードで公開し、 IAM 認証でアクセスを制御します。 サービス連携の知見を広げたい場合はAmazon の専門書も活用できます。

MWAA の料金

MWAA の料金は環境の稼働時間とワーカーの実行時間で構成されます。mw1.small 環境は 1 時間あたり約 0.49 ドル (月額約 353 ドル) です。追加ワーカーは 1 時間あたり約 0.055 ドルです。Step Functions (1,000 状態遷移あたり約 0.025 ドル) と比較して、MWAA は環境の常時稼働コストが高いため、DAG の実行頻度が低い場合は Step Functions の方がコスト効率に優れます。複雑な依存関係管理や既存の Airflow DAG の移行が必要な場合に MWAA を選択します。

まとめ

MWAA は Apache Airflow をマネージドに提供するワークフローオーケストレーションサービスです。Python で DAG を定義し、AWS オペレーター (Glue、EMR、ECS、Lambda) で AWS サービスとの統合を実現します。requirements.txt と plugins.zip でカスタムパッケージとオペレーターを追加し、S3 への DAG アップロードで自動反映されます。