View a markdown version of this page

在 Amazon MWAA 上使用 Apache Airflow 組態選項 - Amazon Managed Workflows for Apache Airflow

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 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 資源。

  • 存取 — 如果您需要存取公有儲存庫,才能直接在 Web 伺服器上安裝相依性,您的環境必須設定公有網路 Web 伺服器存取。如需詳細資訊,請參閱 Apache Airflow 存取模式。

  • Amazon S3 組態 — 用於在 中存放 DAGs、自訂外掛程式plugins.zip和 Python 相依性的 Amazon S3 儲存貯體requirements.txt必須設定為啟用公開存取封鎖和版本控制。

運作方式

當您建立環境時,Amazon MWAA 會將您在 Airflow 組態選項中的 Amazon MWAA 主控台上指定的組態設定,做為環境變數連接到您環境的 AWS Fargate 容器。如果您在 中使用相同名稱的設定airflow.cfg,則您在 Amazon MWAA 主控台上指定的選項會覆寫 中的值airflow.cfg。

雖然我們預設不會在 Amazon MWAA 環境的 Apache Airflow UI airflow.cfg中公開 ,但您可以直接在 Amazon MWAA 主控台上變更 Apache Airflow 組態選項,包括webserver.expose_config公開組態的設定。

使用組態選項載入外掛程式

在 Apache Airflow v2 和更新版本中,外掛程式預設為使用 core.lazy_load_plugins : True設定「延遲」載入。如果您使用的是自訂外掛程式,則必須將 新增core.lazy_load_plugins : False為 Apache Airflow 組態選項,才能在每個 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 組態選項的位置。

此影像說明您可以在 Amazon MWAA 主控台上自訂 Apache Airflow 組態選項的位置。

Apache Airflow 參考

如需 Apache Airflow 支援的組態選項清單,請參閱《Apache Airflow 參考指南》中的組態參考。 若要存取您在 Amazon MWAA 上執行的 Apache Airflow 版本選項,請從下拉式清單中選取版本。

使用 Amazon MWAA 主控台

下列程序會逐步解說將 Airflow 組態選項新增至環境的步驟。

  1. 在 Amazon MWAA 主控台上開啟環境頁面。

  2. 選擇環境。

  3. 選擇編輯。

  4. 選擇下一步。

  5. 在 Airflow 組態選項窗格中選擇新增自訂組態。

  6. 從下拉式清單中選擇組態並輸入值,或輸入自訂組態並輸入值。

  7. 針對您要新增的每個組態,選擇新增自訂組態。

  8. 選擇儲存。

組態參考

下一節包含 Amazon MWAA 主控台下拉式清單中可用 Apache Airflow 組態的清單。

電子郵件組態

下列清單顯示 Amazon MWAA for Apache Airflow v2 和 v3 上可用的 Airflow 電子郵件通知組態選項。

我們建議將連接埠 587 用於 SMTP 流量。根據預設, 會 AWS 封鎖所有 Amazon EC2 執行個體連接埠 25 上的傳出 SMTP 流量。如果您想要在連接埠 25 上傳送傳出流量,您可以請求移除此限制。

氣流組態選項 說明 範例值

email.email_backend

用於 email_backend 中電子郵件通知的 Apache Airflow 公用程式。

airflow.utils.email.send_email_smtp

email.subject_template

Jinja2 範本檔案的路徑,用於在 subject_template 中轉譯 Apache Airflow 提醒電子郵件的主旨。如果未設定此選項,Apache Airflow 會使用預設主旨 Airflow alert: {{ti}}。

/usr/local/airflow/dags/my_subject_template_file

email.html_content_template

用來在 html_content_template 中轉譯 Apache Airflow 提醒電子郵件內文的 Jinja2 範本檔案路徑。如果未設定此選項,Apache Airflow 會使用預設的內建內文範本。

/usr/local/airflow/dags/my_html_content_template_file

smtp.smtp_host

用於 smtp_host 中電子郵件地址的傳出伺服器名稱。

localhost

smtp.smtp_starttls

Transport Layer Security (TLS) 用於在 smtp_starttls 中透過網際網路加密電子郵件。

True

smtp.smtp_ssl

Secure Sockets Layer (SSL) 用於連接 smtp_ssl 中的伺服器和電子郵件用戶端。

False

smtp.smtp_port

在 smtp_port 中指定給伺服器的傳輸控制通訊協定 (TCP) 連接埠。

587

smtp.smtp_mail_from

smtp_mail_from 中的傳出電子郵件地址。

myemail@domain.com

SMTP 連接埠和加密設定

使用 587 搭配 STARTTLS (smtp_starttls :True、smtp_ssl:False) 或 465 搭配 SSL/TLS 包裝函式 (smtp_ssl :)True。

自訂電子郵件主旨和內容

根據預設,Apache Airflow 會使用其內建主體和內文範本來傳送提醒電子郵件。您可以覆寫這些預設值來傳送自訂通知。設定 email.subject_template和 email.html_content_template組態選項以指向您自己的 Jinja2 範本檔案。Jinja2 是一種開放原始碼範本引擎;如需詳細資訊,請參閱 Jinja 網站。

注意

自訂電子郵件內容需要有效的電子郵件後端。在自訂主旨和內文之前,如電子郵件組態表所述設定 SMTP 設定。例如,您可以使用 Amazon Simple Email Service (Amazon SES) 做為 SMTP 主機。

如果您未設定 subject_template和 html_content_template,Apache Airflow 會使用下列基本範本:

預設主旨:

Airflow alert: {{ti}}

預設 HTML 內容:

Try {{try_number}} out of {{max_tries + 1}}<br> Exception:<br>{{exception_html}}<br> Log: <a href="{{ti.log_url}}">Link</a><br> Host: {{ti.hostname}}<br> Mark success: <a href="{{ti.mark_success_url}}">Link</a><br>
在 Amazon MWAA 上使用自訂範本
  1. 建立您的主旨和 HTML 內容範本檔案。範例如下。

    my_subject_template_file

    Production Airflow alert: {{ti}}

    my_html_content_template_file

    Exception:<br>{{exception_html}}<br> State: {{ti.state}}<br> Mark success: <a href="{{ti.mark_success_url}}">Link</a><br>
  2. 將範本檔案上傳至您環境 Amazon S3 儲存貯體中的 DAGs 資料夾。Amazon MWAA 會將此資料夾同步至環境容器/usr/local/airflow/dags/上的 。

  3. 在 Amazon MWAA 主控台上,新增上述電子郵件email.html_content_template組態資料表中顯示的 email.subject_template和 組態選項,將每個選項指向對應範本檔案的容器路徑:

    氣流組態選項 Value

    email.subject_template

    /usr/local/airflow/dags/my_subject_template_file

    email.html_content_template

    /usr/local/airflow/dags/my_html_content_template_file

  4. 儲存您的變更。環境完成更新後,提醒電子郵件會使用自訂主體和內文範本。

如需透過 Amazon SES 做為 SMTP 主機傳送電子郵件的詳細資訊,請參閱 AWS re:Post 文章如何使用 SES 做為 SMTP 主機從 MWAA DAG 任務傳送電子郵件。

任務組態

下列清單顯示 Amazon MWAA for Apache Airflow v2 和 v3 上 Airflow 任務下拉式清單中可用的組態。

氣流組態選項 說明 範例值

core.default_task_retries

在 default_task_retries 中重試 Apache Airflow 任務的次數。

3

core.parallelism

可在整個環境中平行同時執行的任務執行個體數量上限 (平行處理)。

40

排程器組態

下列清單顯示 Amazon MWAA for Apache Airflow v2 和 v3 下拉式清單中可用的 Apache Airflow 排程器組態。

氣流組態選項 說明 範例值

scheduler.catchup_by_default

指示排程器建立 DAG 執行,以在 catchup_by_default 中將 DAG 執行「趕上」至特定時間間隔。

False

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 中使用 Celery Executor 可在任何工作者上同時執行的任務數量上限和下限。值必須以逗號分隔,順序如下:max_concurrency,min_concurrency。

16,12

mwaa.worker_replacement_threshold_seconds

設定 Amazon MWAA 終止並取代運作狀態不佳工作者的秒數。將 設為大於 0 的值時,Amazon MWAA 會取代任何未在設定的閾值內返回正常狀態的工作者。如果設定為 0(預設值),則運作狀態不佳的工作者只有在達到紅色運作狀態時才會被取代。

300

Web 伺服器組態

下列清單顯示 Amazon MWAA for Apache Airflow v2 和 v3 下拉式清單中可用的 Apache Airflow Web 伺服器組態。

氣流組態選項 說明 範例值

webserver.default_ui_timezone

注意

不適用於 Apache Airflow v3。

default_ui_timezone 中的預設 Apache Airflow UI 日期時間設定。

注意

設定 default_ui_timezone選項不會變更 DAGs排程執行的時區。若要變更 DAGs的時區,您可以使用自訂外掛程式。如需詳細資訊,請參閱 在 Amazon MWAA 上變更 DAG 的時區。

America/New_York

觸發器組態

以下清單顯示適用於 Apache Airflow v2 和 v3 的 Amazon MWAA 上可用的 Apache Airflow 觸發器組態。

氣流組態選項 說明 範例值

mwaa.trigger_enabled

用於在 Amazon MWAA 上啟用和停用觸發器。依預設,此值是設為 True。如果設定為 False,Amazon MWAA 將不會在排程器上啟動任何觸發程序。

True

triggerer.default_capacity (在 v2 中)

triggerer.capacity (在 v3 中)

定義每個觸發器可以平行執行的觸發次數。在 Amazon MWAA 上,會為每個觸發器和每個排程器設定此容量,因為這兩個元件會一起執行。對於1000小型60、中型、大型500、xlarge 和 2xlarge 125 250執行個體,每個排程器的預設值分別設定為 、、、 和 。

125

不支援的組態

下列 Apache Airflow 組態選項不適用於 Amazon MWAA。您無法使用 Amazon MWAA 主控台或 API 設定或覆寫這些選項。

氣流組態選項 Apache Airflow 版本 預設值 Reason

core.multi_team

3.2

False

Amazon MWAA 目前不支援多團隊模式。啟用此功能與 Amazon MWAA 身分驗證、CeleryExecutor 和環境層級秘密管理不相容。

triggerer.queues_enabled

3.2

False

Amazon MWAA 不支援觸發器佇列指派。啟用此選項會導致延遲的任務無限期停止。

範例和範例程式碼

範例 DAG

您可以使用下列 DAG 來列印 email_backend Apache Airflow 組態選項。若要執行 以回應 Amazon MWAA 事件,請將程式碼複製到 Amazon S3 儲存貯體上的環境 DAGs 資料夾。

from airflow.decorators import dag from airflow.operators.python import PythonOperator 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()

電子郵件通知設定範例

下列 Apache Airflow 組態選項可用於使用應用程式密碼的 Gmail.com 電子郵件帳戶。如需詳細資訊,請參閱 Gmail 說明參考指南中的使用應用程式密碼登入。

此影像說明如何在 MWAA 主控台上使用 Apache Airflow 組態選項來設定 gmail.com 電子郵件帳戶。

後續步驟?