[アップデート] Amazon MWAAがApache Airflow v2.0.2をサポートしました

Amazon MWAA(Amazon Managed Workflows for Apache Airflow)がAirflow v2.0.2をサポートしていたようです。さくっと起動して簡単に動作確認をしてみました。
2021.05.25

こんにちは。サービスグループの武田です。

いつの間にかAmazon MWAA(Amazon Managed Workflows for Apache Airflow)がAirflow v2.0.2をサポートしていたようです。さくっと起動して簡単に動作確認をしてみました。

Amazon MWAAとは

AWSのマネージドサービスとして提供される、Apache Airflowの実行環境です。これまでMWAAはv1.10.12のみサポートしていましたが、メジャーバージョンアップデートであるv2.0.2をサポートしました。1系と2系の違いは次の記事などを参照してください。

大きなところではTaskFlow APIやTask Groupsといったタスク周り。REST APIのサポート。各コンポーネントのパフォーマンス改善などでしょうか。

動作確認

それでは実際にMWAAを起動してDAGを実行してみます。起動する手順はこれまでと何も変わりません。はじめて起動するという方は次のエントリなどを参考にしてください。

起動までは20分から30分程度かかるようです。環境ができたらWeb UIにアクセスしてみましょう。次のような画面が表示されるはずです。1系からの変更点が目に入りますね。

せっかくなのでTaskFlow APIを利用してDAGを作ってみましょう。Pythonといくつかのモジュールのバージョンをログに出力してみます。

test_python_task.py

import sys
from typing import List, Tuple

import boto3
import jinja2

from airflow.decorators import dag, task
from airflow.utils.dates import days_ago


@dag(default_args={"owner": "airflow"}, schedule_interval=None, start_date=days_ago(2))
def test_python_task_dag():
    @task
    def get_python_version() -> Tuple[str, str]:
        return ("Python", sys.version)

    @task
    def get_boto_version() -> Tuple[str, str]:
        return ("Boto3", boto3.__version__)

    @task
    def get_jinja_version() -> Tuple[str, str]:
        return ("Jinja2", jinja2.__version__)

    @task()
    def print_version(vs: List[Tuple[str, str]]):
        for name, version in vs:
            print(f"{name} version: {version}")

    vs = [get_python_version(), get_boto_version(), get_jinja_version()]

    print_version(vs)


dag = test_python_task_dag()

作成できたらDAG用のS3バケットにアップロードします。少し待てば次のようなDAGがWeb UIで確認できます。

実行ボタンを押して待っていれば実行完了するはずです。v2になってAuto-refresh機能がサポートされたので、手動でぽちぽち更新ボタンを押さなくても自動的に更新されていきます。

ログを確認してみると次のように出力されていました。Pythonは3.7.9のようです。

[2021-05-25 08:46:59,742] {{logging_mixin.py:104}} INFO - Python version: 3.7.9 (default, Feb 18 2021, 03:10:35) 
[GCC 7.3.1 20180712 (Red Hat 7.3.1-12)]
[2021-05-25 08:46:59,806] {{logging_mixin.py:104}} INFO - Boto3 version: 1.17.53
[2021-05-25 08:46:59,901] {{logging_mixin.py:104}} INFO - Jinja2 version: 2.11.3

まとめ

MWAAがAirflow v2.0.2をサポートしたということで起動して確認してみました。これからMWAAの導入を検討されている方はぜひv2を使いましょう!