新增或更新 DAGs - Amazon Managed Workflows for Apache Airflow

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

新增或更新 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) 是在單一 Python 檔案中定義,可將 DAG 的結構定義為程式碼。它包含下列項目:

若要在 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 v2 from 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
  1. 使用以下命令列出所有 Amazon S3 儲存貯體。

    aws s3 ls
  2. 使用下列命令來列出 Amazon S3 儲存貯體中您環境的檔案和資料夾。

    aws s3 ls s3://YOUR_S3_BUCKET_NAME
  3. 下列命令會將dag_def.py檔案上傳至dags資料夾。

    aws s3 cp dag_def.py s3://YOUR_S3_BUCKET_NAME/dags/

    如果您的 Amazon S3 儲存貯體上尚dags不存在名為 的資料夾,此命令會建立dags資料夾,並將名為 的檔案上傳dag_def.py到新資料夾。

使用 Amazon S3 主控台

Amazon S3 主控台是 Web 型使用者介面,可讓您建立和管理 Amazon S3 儲存貯體中的資源。下列步驟假設您有一個名為 DAGs 資料夾dags

使用 Amazon S3 主控台上傳
  1. 在 Amazon MWAA 主控台上開啟環境頁面

  2. 選擇環境。

  3. S3 窗格中的 DAG 程式碼中選取 S3 儲存貯體連結,以在 Amazon S3 主控台上開啟您的儲存貯體。 S3

  4. 選擇 dags 資料夾。

  5. 選擇上傳

  6. 選擇新增檔案

  7. 選取您 的本機複本dag_def.py,然後選擇上傳

在 Amazon MWAA 主控台上指定 DAGs路徑 (第一次)

下列步驟假設您正在指定名為 的 Amazon S3 儲存貯體上資料夾的路徑dags

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

  2. 選擇您要執行 DAGs的環境。

  3. 選擇編輯

  4. Amazon S3 窗格中的 DAG 程式碼上,選擇 DAG 資料夾欄位旁的瀏覽 S3

  5. 選取您的dags資料夾。

  6. 選擇 Choose (選擇)

  7. 選擇下一步更新環境

檢視 Apache Airflow UI 上的變更

登入 Apache Airflow

您需要 AWS Identity and Access Management (IAM) 中 AWS 帳戶的Apache Airflow UI 存取政策:AmazonMWAAWebServerAccess許可,才能檢視 Apache Airflow UI。

存取您的 Apache Airflow UI
  1. 在 Amazon MWAA 主控台上開啟環境頁面

  2. 選擇環境。

  3. 選擇開啟 Airflow UI

後續步驟?

  • 使用 GitHub 上的 aws-mwaa-local-runner,在本機測試您的 DAGs、自訂外掛程式和 Python 相依性。