

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

# 在 Amazon MWAA 上使用 Apache Airflow 組態選項
<a name="configuring-env-variables"></a>

Apache Airflow 組態選項可以做為環境變數連接至 Amazon Managed Workflows for Apache Airflow 環境。您可以從建議的下拉式清單中選擇，或在 Amazon MWAA 主控台上為您的 Apache Airflow 版本指定自訂組態選項。本主題說明可用的 Apache Airflow 組態選項，以及如何使用這些選項來覆寫您環境中的 Apache Airflow 組態設定。

**Contents**
+ [先決條件](#configuring-env-variables-prereqs)
+ [運作方式](#configuring-env-variables-how)
+ [使用組態選項載入外掛程式](#configuring-2.0-airflow-override)
+ [組態選項概觀](#configuring-env-variables-customizing)
  + [Apache Airflow 組態選項](#configuring-env-variables-airflow-ref)
  + [Apache Airflow 參考](#configuring-env-variables-reference-options)
  + [使用 Amazon MWAA 主控台](#configuring-env-variables-console-add)
+ [組態參考](#configuring-env-variables-reference)
  + [電子郵件組態](#configuring-env-variables-email)
  + [任務組態](#configuring-env-variables-tasks)
  + [排程器組態](#configuring-env-variables-scheduler)
  + [工作者組態](#configuring-env-variables-workers)
  + [Web 伺服器組態](#configuring-env-variables-webserver)
  + [觸發器組態](#configuring-env-variables-webserver)
+ [範例和範例程式碼](#configuring-env-variables-code)
  + [範例 DAG](#configuring-env-variables-dag)
  + [電子郵件通知設定範例](#configuring-env-variables-email)
+ [後續步驟？](#configuring-env-variables-next-up)

## 先決條件
<a name="configuring-env-variables-prereqs"></a>

您將需要下列項目，才能完成此頁面上的步驟。
+ **許可** — 您的管理員 AWS 帳戶 必須已授予您環境的 [AmazonMWAAFullConsoleAccess](access-policies.md#console-full-access) 存取控制政策的存取權。此外，您的[執行角色](mwaa-create-role.md)必須允許您的 Amazon MWAA 環境，才能存取您環境所使用的 AWS 資源。
+ **存取** — 如果您需要存取公有儲存庫，才能直接在 Web 伺服器上安裝相依性，您的環境必須設定**公有網路** Web 伺服器存取。如需詳細資訊，請參閱 [Apache Airflow 存取模式](configuring-networking.md)。
+ **Amazon S3 組態** — 用於在 中存放 DAGs、自訂外掛程式`plugins.zip`和 Python 相依性的 [Amazon S3 儲存貯](mwaa-s3-bucket.md)體`requirements.txt`必須設定為啟用*公開存取封鎖*和*版本控制*。

## 運作方式
<a name="configuring-env-variables-how"></a>

當您建立環境時，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`公開組態的設定。

## 使用組態選項載入外掛程式
<a name="configuring-2.0-airflow-override"></a>

在 Apache Airflow v2 和更新版本中，外掛程式預設為使用 `core.lazy_load_plugins : True`設定「延遲」載入。如果您使用的是自訂外掛程式，則必須將 新增`core.lazy_load_plugins : False`為 Apache Airflow 組態選項，才能在每個 Airflow 程序開始時載入外掛程式，以覆寫預設設定。

## 組態選項概觀
<a name="configuring-env-variables-customizing"></a>

當您在 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 組態選項
<a name="configuring-env-variables-airflow-ref"></a>

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

![此影像說明您可以在 Amazon MWAA 主控台上自訂 Apache Airflow 組態選項的位置。](http://docs.aws.amazon.com/zh_tw/mwaa/latest/userguide/images/mwaa-console-airflow-config.png)


### Apache Airflow 參考
<a name="configuring-env-variables-reference-options"></a>

如需 Apache Airflow 支援的組態選項清單，請參閱《Apache Airflow [參考指南》中的組態](https://airflow.apache.org/docs/apache-airflow/stable/configurations-ref.html)參考。 **若要存取您在 Amazon MWAA 上執行的 Apache Airflow 版本選項，請從下拉式清單中選取版本。

### 使用 Amazon MWAA 主控台
<a name="configuring-env-variables-console-add"></a>

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

1. 在 Amazon MWAA 主控台上開啟[環境](https://console.aws.amazon.com/mwaa/home#/environments)頁面。

1. 選擇環境。

1. 選擇**編輯**。

1. 選擇**下一步**。

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

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

1. 針對您要新增的每個組態，選擇**新增自訂**組態。

1. 選擇**儲存**。

## 組態參考
<a name="configuring-env-variables-reference"></a>

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

### 電子郵件組態
<a name="configuring-env-variables-email"></a>

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

我們建議將連接埠 587 用於 SMTP 流量。根據預設， 會 AWS 封鎖所有 Amazon EC2 執行個體連接埠 25 上的傳出 SMTP 流量。如果您想要在連接埠 25 上傳送傳出流量，您可以[請求移除此限制](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-port-25-throttle/)。


| 氣流組態選項 | 說明 | 範例值 | 
| --- | --- | --- | 
| email.email\_backend | 用於 [email\_backend](https://airflow.apache.org/docs/apache-airflow/2.0.2/configurations-ref.html#email-backend) 中電子郵件通知的 Apache Airflow 公用程式。 | airflow.utils.email.send\_email\_smtp | 
| smtp.smtp\_host | 用於 [smtp\_host](https://airflow.apache.org/docs/apache-airflow/2.0.2/configurations-ref.html#smtp-host) 中電子郵件地址的傳出伺服器名稱。 | localhost | 
| smtp.smtp\_starttls | Transport Layer Security (TLS) 用於在 [smtp\_starttls](https://airflow.apache.org/docs/apache-airflow/2.0.2/configurations-ref.html#smtp-starttls) 中透過網際網路加密電子郵件。 | False | 
| smtp.smtp\_ssl | Secure Sockets Layer (SSL) 用於連接 [smtp\_ssl](https://airflow.apache.org/docs/apache-airflow/2.0.2/configurations-ref.html#smtp-ssl) 中的伺服器和電子郵件用戶端。 | True | 
| smtp.smtp\_port | 在 [smtp\_port 中指定給伺服器的傳輸控制通訊協定 (TCP) 連接埠](https://airflow.apache.org/docs/apache-airflow/2.0.2/configurations-ref.html#smtp-port)。 | 587 | 
| smtp.smtp\_mail\_from | [smtp\_mail\_from](https://airflow.apache.org/docs/apache-airflow/2.0.2/configurations-ref.html#smtp-mail-from) 中的傳出電子郵件地址。 | myemail@domain.com | 

### 任務組態
<a name="configuring-env-variables-tasks"></a>

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


| 氣流組態選項 | 說明 | 範例值 | 
| --- | --- | --- | 
| core.default\_task\_retries | 在 [default\_task\_retries](https://airflow.apache.org/docs/apache-airflow/2.0.2/configurations-ref.html#default-task-retries) 中重試 Apache Airflow 任務的次數。 | 3 | 
| core.parallelism | 可在整個環境中平行同時執行的任務執行個體數量上限 ([平行處理](https://airflow.apache.org/docs/apache-airflow/2.0.2/configurations-ref.html#parallelism))。 | 40 | 

### 排程器組態
<a name="configuring-env-variables-scheduler"></a>

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


| 氣流組態選項 | 說明 | 範例值 | 
| --- | --- | --- | 
| scheduler.catchup\_by\_default | 指示排程器建立 DAG 執行，以在 [catchup\_by\_default](https://airflow.apache.org/docs/apache-airflow/2.0.2/configurations-ref.html#catchup-by-default) 中將 DAG 執行「趕上」至特定時間間隔。 | False | 
| scheduler.scheduler\_zombie\_task\_threshold 不適用於 Apache Airflow v3。  | 告知排程器是否要將任務執行個體標記為失敗，並在 [scheduler\_zombie\_task\_threshold](https://airflow.apache.org/docs/apache-airflow/2.0.2/configurations-ref.html#scheduler-zombie-task-threshold) 中重新排程任務。 | 300 | 

### 工作者組態
<a name="configuring-env-variables-workers"></a>

下列清單顯示在適用於 Apache Airflow v2 和 v3 的 Amazon MWAA 下拉式清單中可用的 Airflow 工作者組態。


| 氣流組態選項 | 說明 | 範例值 | 
| --- | --- | --- | 
| celery.worker\_autoscale | 可在任何工作者上使用 [worker\_autoscale](https://airflow.apache.org/docs/apache-airflow/2.0.2/configurations-ref.html#worker-autoscale) 中的 [Celery Executor](https://airflow.apache.org/docs/apache-airflow/2.0.2/executor/celery.html) 同時執行的任務數量上限和下限。值必須以逗號分隔，順序如下：`max_concurrency,min_concurrency`。 | 16，12 | 

### Web 伺服器組態
<a name="configuring-env-variables-webserver"></a>

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


| 氣流組態選項 | 說明 | 範例值 | 
| --- | --- | --- | 
| webserver.default\_ui\_timezone 不適用於 Apache Airflow v3。  | default[\_ui\_timezone](https://airflow.apache.org/docs/apache-airflow/2.0.2/configurations-ref.html#default-ui-timezone) 中的預設 Apache Airflow UI 日期時間設定。 設定 `default_ui_timezone`選項不會變更 DAGs排程執行的時區。若要變更 DAGs的時區，您可以使用自訂外掛程式。如需詳細資訊，請參閱 [在 Amazon MWAA 上變更 DAG 的時區](samples-plugins-timezone.md)。  | America/New\_York | 

### 觸發器組態
<a name="configuring-env-variables-webserver"></a>

以下清單顯示適用於 Apache Airflow v2 和 v3 的 Amazon MWAA 上可用的 Apache Airflow [觸發器](https://airflow.apache.org/docs/apache-airflow/stable/authoring-and-scheduling/deferring.html)組態。


| 氣流組態選項 | 說明 | 範例值 | 
| --- | --- | --- | 
| mwaa.trigger\_enabled | 用於在 Amazon MWAA 上啟用和停用觸發器。依預設，此值是設為 `True`。如果設為 `False`，Amazon MWAA 將不會在排程器上啟動任何觸發程序。 | True | 
| triggerer.default\_capacity （在 v2 中）<br />triggerer.capacity （在 v3 中） | 定義每個觸發器可以平行執行的觸發次數。在 Amazon MWAA 上，隨著兩個元件一起執行，每個觸發器和每個排程器都會設定此容量。對於`1000`小型`60`、中型和大型`500`、xlarge 和 2xlarge `125` `250`執行個體，每個排程器的預設值分別設定為 、、、 和 。 | 125 | 

## 範例和範例程式碼
<a name="configuring-env-variables-code"></a>

### 範例 DAG
<a name="configuring-env-variables-dag"></a>

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

```
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()
```

### 電子郵件通知設定範例
<a name="configuring-env-variables-email"></a>

下列 Apache Airflow 組態選項可用於使用應用程式密碼的 Gmail.com 電子郵件帳戶。如需詳細資訊，請參閱 *Gmail 說明參考指南*中的[使用應用程式密碼登入](https://support.google.com/mail/answer/185833?hl=en-GB)。

![此影像說明如何在 MWAA 主控台上使用 Apache Airflow 組態選項來設定 gmail.com 電子郵件帳戶。](http://docs.aws.amazon.com/zh_tw/mwaa/latest/userguide/images/mwaa-console-config-email-configuration.png)


## 後續步驟？
<a name="configuring-env-variables-next-up"></a>
+ 了解如何將 DAG 資料夾上傳至 中的 Amazon S3 儲存貯體[新增或更新 DAGs](configuring-dag-folder.md)。