Amazon MWAA での Apache Airflow 設定オプションの使用
Apache Airflow 設定オプションは、Amazon Managed Workflows for Apache Airflow 環境に環境変数としてアタッチできます。推奨ドロップダウンリストから選択するか、Amazon MWAA コンソールでお使いの Apache Airflow バージョンに合わせてカスタム設定オプションを指定できます。このトピックでは、使用可能な Apache Airflow 設定オプションと、これらのオプションを使用して環境の Apache Airflow 設定を上書きする方法について説明します。
目次
前提条件
このページのステップを完了するには、以下のものが必要です。
-
アクセス許可 — AWS アカウント には、管理者から、ご使用の環境の AmazonMWAAFullConsoleAccess アクセスコントロールポリシーへのアクセス許可が付与されている必要があります。さらに、Amazon MWAA 環境には、その環境で使用される AWS のリソースへのアクセスを 実行ロール で許可されている必要があります。
-
アクセス — 依存関係をウェブサーバーに直接インストールするためにパブリックリポジトリにアクセスする必要がある場合は、パブリックネットワーク のウェブサーバーアクセスが環境に設定されている必要があります。詳細については、Apache Airflow のアクセスモード を参照してください。
-
Amazon S3 設定 —
plugins.zipで DAG、カスタムプラグイン、およびrequirements.txtで Python の依存関係を保存するために使用される Amazon S3 バケット は、Public Access Blocked と Versioning Enabled で設定する必要があります。
仕組み
環境を作成すると、Amazon MWAAはAmazon MWAAコンソールで指定した設定を Airflow 設定オプション として指定し、それをのコンテナのAWS Fargate環境変数にアタッチします。airflow.cfg で同じ名前の設定を使用している場合は、Amazon MWAA コンソールで指定するオプションのほうが、airflow.cfg の値よりも優先されます。
デフォルトでは、Amazon MWAA 環境の Apache Airflow UI で airflow.cfg を公開しませんが設定を公開するための webserver.expose_config の設定など、Amazon MWAA コンソールで直接 Apache Airflow 設定オプションを変更できます。
設定オプションを使用してプラグインをロードする
Apache Airflow v2 のデフォルトでは、プラグインは設定を使用して「遅延的に」ロードされるように core.lazy_load_plugins : True 設定されています。カスタムプラグインを使用している場合は、Apache Airflow 設定オプションとして core.lazy_load_plugins : False を追加し、各 Airflow プロセスの開始時にプラグインをロードしてデフォルト設定を上書きする必要があります。
設定オプションの概要
Amazon MWAA コンソールで設定を追加すると、Amazon MWAA はその設定を環境変数として書き込みます。
-
リストされたオプション。ドロップダウンリストで、お使いの Apache Airflow バージョンで使用可能な設定のいずれかを選択できます。例えば、
dag_concurrency:16です。その設定は、環境のFargateコンテナにAIRFLOW__CORE__DAG_CONCURRENCY : 16として反映されます。 -
カスタムオプション。お使いの Apache Airflow バージョンにはない Airflow 設定オプションをドロップダウンリストに指定することもできます。例えば、
foo.user:YOUR_USER_NAMEです。その設定は、環境のFargateコンテナにAIRFLOW__FOO__USER : YOUR_USER_NAMEとして反映されます。
Apache Airflow 設定オプション
以下の画像は、Amazon MWAA コンソールで Apache Airflow 設定オプション をカスタマイズできる場所を示しています。
Apache エアフローリファレンス
Apache Airflow でサポートされている設定オプションのリストについては、Apache Airflow リファレンスガイド の 設定リファレンス
Amazon MWAA コンソールの使用
以下の手順では、Airflow 設定オプションを環境に追加するステップを説明します。
-
Amazon MWAA コンソールで、環境ページ
を開きます。 -
環境を選択します。
-
[編集] を選択します。
-
次へ を選択します。
-
Airflow 設定オプション ペインで カスタム設定を追加 を選択します。
-
ドロップダウンリストから設定を選択して値を入力するか、カスタム設定を入力して値を入力します。
-
追加する設定ごとに カスタム設定を追加 を選択します。
-
保存 を選択します。
設定リファレンス
以下のセクションでは、Amazon MWAA コンソールのドロップダウンリストに利用可能な Apache Airflow 設定のリストが表示されます。
電子メールの設定
次のリストは、Apache Airflow v2 および v3 の Amazon MWAA で使用できる Airflow E メール通知設定オプションを示しています。
SMTP トラフィックにはポート 587 を使用することをお勧めします。デフォルトでは、すべての Amazon EC2 インスタンスのポート 25 でのアウトバウンド SMTP トラフィックをAWSブロックします。ポート 25 でアウトバウンド・トラフィックを送信したい場合は、この制限を解除するようリクエストする
| エアフロー設定のオプション | 説明 | 値の例 |
|---|---|---|
|
email.email_backend |
email_backend |
airflow.utils.email.send_email_smtp |
|
smtp.smtp_host |
smtp_host |
localhost |
|
smtp.smtp_starttls |
Transport Layer Security (TLS) は、smtp_starttls |
誤 |
|
smtp.smtp_ssl |
セキュアソケットレイヤー (SSL) は、smtp_ssl |
正 |
|
smtp.smtp_port |
smtp_port |
587 |
|
smtp.smtp_mail_from |
smtp_mail_from |
myemail@domain.com |
タスクの設定
次のリストは、Apache Airflow v2 および v3 の Amazon MWAA の Airflow タスクのドロップダウンリストで使用できる設定を示しています。
| エアフロー設定のオプション | 説明 | 値の例 |
|---|---|---|
|
core.default_task_retries |
Apache エアフロータスクを default_task_retries |
3 |
|
core.parallelism |
環境全体で同時に実行できるタスクインスタンスの最大数 (parallel 処理 |
40 |
スケジューラーの設定
次のリストは、Apache Airflow v2 および v3 の Amazon MWAA のドロップダウンリストで使用できる Apache Airflow スケジューラー設定を示しています。
| エアフロー設定のオプション | 説明 | 値の例 |
|---|---|---|
|
scheduler.catchup_by_default |
catchup_by_default |
誤 |
|
scheduler.scheduler_zombie_task_threshold 注記Apache Airflow v3 では使用できません。 |
タスクインスタンスを障害としてマークし、scheduler_zombie_task_threshold |
300 |
ワーカーの設定
次のリストは、Apache Airflow v2 および v3 の Amazon MWAA のドロップダウンリストで使用できる Airflow ワーカー設定を示しています。
| エアフロー設定のオプション | 説明 | 値の例 |
|---|---|---|
|
celery.worker_autoscale |
worker_autoscale |
16、12 |
ウェブサーバーの設定
次のリストには、Apache Airflow v2 および v3 用の Amazon MWAA のドロップダウンリストで使用できる Apache Airflow ウェブサーバーの設定が表示されます。
| エアフロー設定のオプション | 説明 | 値の例 |
|---|---|---|
|
webserver.default_ui_timezone 注記Apache Airflow v3 では使用できません。 |
default_ui_timezone 注記この |
America/New_York |
トリガー設定
以下のリストは、Apache Airflow v2 および v3 の Amazon MWAA で使用可能な Apache Airflow トリガー
| エアフロー設定のオプション | 説明 | 値の例 |
|---|---|---|
|
mwaa.triggerer_enabled |
Amazon MAA でトリガーをアクティブ化および非アクティブ化するために使用されます。デフォルトではこの値は |
正 |
|
triggerer.default_capacity (v2 の場合) triggerer.capacity (v3 の場合) |
各トリガーで parallel に実行できる、トリガーの数を定義します。Amazon MWAA では、両方のコンポーネントが互いに並行して実行されるため、この容量はトリガーごととスケジューラーごとに設定されます。デフォルトのスケジューラあたりの値は、それぞれ small、medium と large、xlarge、2xlarge のインスタンスに対して |
125 |
例とサンプルコード
DAG の例
次の DAG を使用して email_backend Apache Airflow 設定オプションを印刷できます。Amazon MWAA イベントに応答して実行するには、Amazon S3 ストレージバケットにある環境の DAG フォルダにコードをコピーします。
from airflow.decorators import dag from datetime import datetime def print_var(**kwargs): email_backend = kwargs['conf'].get(section='email', key='email_backend') print("email_backend") return email_backend @dag( dag_id="print_env_variable_example", schedule_interval=None, start_date=datetime(yyyy,m,d), catchup=False, ) def print_variable_dag(): email_backend_test = PythonOperator( task_id="email_backend_test", python_callable=print_var, provide_context=True ) print_variable_test = print_variable_dag()
電子メール通知の設定例
アプリパスワードを使用する Gmail.com メールアカウントには、次の Apache Airflow 設定オプションを使用できます。詳しくは、Gmail ヘルプリファレンスガイド の アプリパスワードを使用してログインする
次のステップ
-
DAG の追加と更新で、DAG フォルダを Amazon S3 バケットにアップロードする方法について説明します。