はじめに
2025年4月22日、ついにAirflow 3.0がGAされましたね。
AWSのEC2上に、Dockerを利用して環境を構築してみたので、その手順をメモしておきます。
やってみる
EC2インスタンスの作成
今回は、以下のスペックで、EC2インスタンスを作成しました。
- OS:Amazon Linux 2023
- インスタンスタイプ:m5.2xlarge
公式Docを見ると、メモリ4GB以上という要件がありました。ただ、t2.medium
(メモリ4GiB)やt3.large
(メモリ8GiB)で試すと、起動しなかったり動きが遅かったりしたので、今回はとりあえずm5.2xlarge
(vCPU 8, メモリ32GiB)で動かしています。
セキュリティグループ修正
以下のインバウンドルールを追加します。
- 手元のPCからSSHでの接続用
- ポート:22
- ソース:自身のIPアドレス
- Airflow UIのブラウザアクセス用
- ポート:8080
- ソース:自身のIPアドレス
Dockerインストール
ここからは、何かしらのツールでEC2に接続します。今回は、手元のPCのTera TermからSSH接続しました。
以下のコマンドを実行して、Dockerをインストールします。
# システムアップデート
sudo dnf update -y
# Docker インストール
sudo dnf install docker -y
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -a -G docker ec2-user
Docker Composeインストール
次に、Docker Composeをインストールします。
# Docker Composeダウンロード、インストール
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.4.1/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
# 実行バイナリに対して実行権限付与
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
# インストール結果の確認
docker compose version
# 一度抜ける
exit
以下を参考にしました。今はDocker composeのv2が主流なんですね。
Airflowの初期化と起動
ここまででDockerの環境が準備出来たので、Airflowのdocker-composeを使ってAirflowの環境を構築します。
現時点でのAirflowの最新バージョンはv3.0.1
なので、新しいバージョンがある場合はdocker-compose.yaml
のURLを修正してください。
# 作業ディレクトリ作成
mkdir airflow
cd airflow
# docker-compose.yamlのダウンロード
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/3.0.1/docker-compose.yaml'
# 必要なディレクトリの作成
mkdir -p ./dags ./logs ./plugins ./config
# ユーザー設定
echo -e "AIRFLOW_UID=$(id -u)" > .env
# データベースの初期化
docker compose up airflow-init
# Airflowの起動
docker compose up -d
以下を参考にしました。
Airflow UIにアクセス
環境立ち上げに少し時間がかかりますが、完了したら
http://<EC2のIP>:8080
にアクセスします。
上手く環境が作れていれば、以下のようなSign in画面が表示されるはずです。UsernameとPasswordはデフォルトだとどちらもairflow
なので、これを入力してサインインします。
サインインできました!!!かなり画面デザイン変わってる!!!
ダークモードにして、元々あったDAG(tutorial)を何回か実行してみました。DAGの画面もかなり変わってますね。
今回はv3.0.1で構築しましたが、それが出る前のv3.0.0
で試したところ、Airflow UIにアクセスすると画面遷移がループしてアクセスできませんでした。このissueで報告されていましたが、v3.0.1
で直ったようです。
アクセスできない場合は、ログを確認してみましょう。Airflow UIへのアクセスログは、APIサーバーのログで確認できます。
# 100行ログを見る
docker compose logs --tail=100 airflow-apiserver
おわりに
GAされてから1か月近くたってしまいましたが、ようやく自分の手元で構築することができました。
新しい機能など、試してみたいと思います。特に、左メニューの一つであるAssetsが気になります。今まではDatasetsという、DAGで扱うデータを抽象化した概念がありましたが、それが進化したもののようです。
データリネージュが実現できたり、データの更新を検知して処理を実行したりできるようで、既存のDatasetsとどう違うかとかを追ってみようと思います。
では、皆様よき Airflow 3 ライフを!