Amazon MWAA 専門
Apache Airflow のマネージド環境でワークフローのオーケストレーションを行うサービス
何ができるか
Amazon Managed Workflows for Apache Airflow (MWAA) は、オープンソースのワークフローオーケストレーションツール Apache Airflow をマネージドサービスとして提供します。Airflow の環境構築、スケーリング、パッチ適用、可用性の管理を AWS が行うため、ユーザーはワークフロー (DAG) の開発に集中できます。S3 に DAG ファイルをアップロードするだけでワークフローをデプロイできます。
どのような場面で使うか
ETL パイプラインのオーケストレーション (Glue ジョブや EMR ステップの順序制御)、機械学習パイプラインの管理 (データ前処理からモデル学習・デプロイまでの自動化)、定期的なデータ集計・レポート生成の自動化、複数の AWS サービスをまたぐ複雑なバッチ処理の制御などに活用されています。
身近な例え
オーケストラの指揮者に例えるとわかりやすいでしょう。各楽器奏者 (AWS サービスやジョブ) がいつ、どの順番で演奏するかを楽譜 (DAG) に従って指示します。MWAA はこの指揮者を雇う手間 (環境構築) を省き、楽譜を渡すだけで演奏会 (ワークフロー) を開催できるようにしてくれます。
Amazon MWAA とは
Amazon MWAA (Managed Workflows for Apache Airflow) は、Apache Airflow のマネージドサービスです。Apache Airflow はワークフローをプログラム的に作成・スケジュール・監視するためのオープンソースプラットフォームで、データエンジニアリングの分野で広く使われています。ワークフローは DAG (有向非巡回グラフ) として Python コードで定義し、タスク間の依存関係と実行順序を宣言的に記述します。MWAA はこの Airflow の実行環境を AWS が管理します。
環境の構成と DAG のデプロイ
MWAA 環境を作成すると、Web サーバー、スケジューラー、ワーカーが自動的にプロビジョニングされます。DAG ファイルは S3 バケットに配置し、MWAA が自動的に読み込みます。Python の依存ライブラリは requirements.txt で指定でき、カスタムプラグインも S3 経由でデプロイできます。環境のサイズ (mw1.small、mw1.medium、mw1.large) を選択でき、ワーカーの自動スケーリングにも対応しています。
AWS サービスとの連携
MWAA には AWS サービスと連携するための Airflow プロバイダーパッケージが事前にインストールされています。Glue ジョブの実行、EMR クラスターの起動、Lambda 関数の呼び出し、ECS タスクの実行、S3 へのデータ転送、Redshift へのクエリ実行など、多数の AWS サービスをタスクとして DAG に組み込めます。IAM ロールによる認証で、各サービスへのアクセス権限を安全に管理できます。Airflow の Web UI でワークフローの実行状況をリアルタイムに監視できます。
注意点
- MWAA 環境は常時稼働するため、環境サイズに応じた時間課金が発生する。小規模なワークフローでは Step Functions の方がコスト効率が良い場合がある
- DAG ファイルの S3 への反映には数分のタイムラグがある。即座に反映されない場合は環境の同期間隔を確認すること
- MWAA 環境は VPC 内に配置される。Web UI へのアクセスにはパブリックネットワークまたは VPN 経由のプライベートネットワークを選択する
この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。