本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
新增或更新 DAGs
有向無環圖形 (DAGs) 在 Python 檔案中定義,將 DAG 的結構定義為程式碼。您可以使用 AWS CLI或 Amazon S3 主控台將 DAGs上傳至您的環境。本主題說明使用 Amazon S3 儲存貯體中的 dags
資料夾,在 Amazon Managed Workflows for Apache Airflow 環境中新增或更新 Apache Airflow DAGs 的步驟。
章節
先決條件
您將需要下列項目,才能完成此頁面上的步驟。
-
許可 — AWS 您的管理員必須已授予您的帳戶存取您環境的 AmazonMWAAFullConsoleAccess 存取控制政策。此外,您的執行角色必須允許 Amazon MWAA 環境存取您的環境所使用的 AWS 資源。
-
存取 — 如果您需要存取公有儲存庫,才能直接在 Web 伺服器上安裝相依性,您的環境必須設定公有網路 Web 伺服器存取。如需詳細資訊,請參閱Apache Airflow 存取模式。
-
Amazon S3 組態 — 用於在 中存放 DAGs、自訂外掛程式
plugins.zip
和 Python 相依性的 Amazon S3 儲存貯體requirements.txt
必須設定為啟用公開存取封鎖和版本控制。
運作方式
導向無環圖 (DAG) 是在將 DAG 結構定義為程式碼的單一 Python 檔案中定義。它包含下列項目:
若要在 Amazon MWAA 環境中執行 Apache Airflow 平台,您需要將 DAG 定義複製到儲存貯體中的 dags
資料夾。例如,儲存貯體中的 DAG 資料夾可能如下所示:
範例 DAG 資料夾
dags/ └ dag_def.py
Amazon MWAA 每 30 秒會自動將新的和變更的物件從 Amazon S3 儲存貯體同步至 Amazon MWAA 排程器和工作者容器的/usr/local/airflow/dags
資料夾,無論檔案類型為何,都會保留 Amazon S3 來源的檔案階層。新 DAGs 出現在 Apache Airflow UI 中所需的時間由 控制scheduler.dag_dir_list_interval
。對現有 DAGs的變更將在下一個 DAG 處理迴圈中收取。
注意
您不需要在 DAG 資料夾中包含airflow.cfg
組態檔案。您可以從 Amazon MWAA 主控台覆寫預設 Apache Airflow 組態。如需詳細資訊,請參閱在 Amazon MWAA 上使用 Apache Airflow 組態選項。
v2 中的變更
-
新增:運算子、勾點和執行器。DAGs 中的匯入陳述式,以及您在 Amazon MWAA
plugins.zip
上 中指定的自訂外掛程式已在 Apache Airflow v1 和 Apache Airflow v2 之間變更。例如,from airflow.contrib.hooks.aws_hook import AwsHook
在 Apache Airflow v1 中,Apache Airflow v2from airflow.providers.amazon.aws.hooks.base_aws import AwsBaseHook
中的 已變更為 。若要進一步了解,請參閱《Apache Airflow 參考指南》中的 Python API參考。
使用 Amazon MWAA CLI 公用程式測試 DAGs
-
命令列界面 (CLI) 公用程式會在本機複寫 Amazon Managed Workflows for Apache Airflow 環境。
-
CLI 會在本機建置類似於 Amazon MWAA 生產映像的 Docker 容器映像。這可讓您執行本機 Apache Airflow 環境,在部署到 Amazon MWAA 之前開發和測試 DAGs、自訂外掛程式和相依性。
-
若要執行 CLI,請參閱 GitHub 上的 aws-mwaa-local-runner
。
將 DAG 程式碼上傳至 Amazon S3
您可以使用 Amazon S3 主控台或 AWS Command Line Interface (AWS CLI) 將 DAG 程式碼上傳至 Amazon S3 儲存貯體。下列步驟假設您正在將程式碼 (.py
) 上傳到 Amazon S3 儲存貯體dags
中名為 的資料夾。
使用 AWS CLI
AWS Command Line Interface (AWS CLI) 是一種開放原始碼工具,可讓您使用命令列 shell 中的命令與 AWS 服務互動。若要完成此頁面上的步驟,您需要下列項目:
使用 上傳 AWS CLI
-
使用下列命令列出所有 Amazon S3 儲存貯體。
aws s3 ls
-
使用以下命令列出您環境的 Amazon S3 儲存貯體中的檔案和資料夾。
aws s3 ls s3://
YOUR_S3_BUCKET_NAME
-
下列命令會將
dag_def.py
檔案上傳至dags
資料夾。aws s3 cp dag_def.py s3://
amzn-s3-demo-bucket
/dags/如果您的 Amazon S3 儲存貯體上尚
dags
不存在名為dag_def.py
的資料夾,此命令會建立dags
資料夾,並將名為 的檔案上傳至新的資料夾。
使用 Amazon S3 主控台
Amazon S3 主控台是一種 Web 型使用者介面,可讓您建立和管理 Amazon S3 儲存貯體中的資源。下列步驟假設您有一個名為 DAGs 資料夾dags
。
使用 Amazon S3 主控台上傳
-
在 Amazon MWAA 主控台上開啟環境頁面
。 -
選擇環境。
-
在 S3 窗格中的 DAG 程式碼中選取 S3 儲存貯體連結,以在 Amazon S3 主控台上開啟儲存貯體。
-
選擇
dags
資料夾。 -
選擇上傳。
-
選擇新增檔案。
-
選取 的本機副本
dag_def.py
,然後選擇上傳。
在 Amazon MWAA 主控台上指定 DAGs路徑 (第一次)
下列步驟假設您正在指定名為 的 Amazon S3 儲存貯體上資料夾的路徑dags
。
-
在 Amazon MWAA 主控台上開啟環境頁面
。 -
選擇您要執行 DAGs的環境。
-
選擇編輯。
-
在 Amazon S3 窗格中的 DAG 程式碼上,選擇 DAG 資料夾欄位旁的瀏覽 S3。
-
選取您的
dags
資料夾。 -
選擇 Choose (選擇)。
-
選擇下一步,更新環境。
檢視 Apache Airflow UI 上的變更
登入 Apache Airflow
您需要 AWS Identity and Access Management (IAM) 中 AWS 帳戶的Apache Airflow UI 存取政策:AmazonMWAAWebServerAccess許可,才能檢視 Apache Airflow UI。
存取您的 Apache Airflow UI
-
在 Amazon MWAA 主控台上開啟環境頁面
。 -
選擇環境。
-
選擇開啟氣流使用者介面。
後續步驟?
-
使用 GitHub 上的 aws-mwaa-local-runner
,在本機測試您的 DAGs、自訂外掛程式和 Python 相依性。