共用方式為


在工作流程協調流程管理員中同步處理 GitHub 存放庫

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用

注意

此功能處於公開預覽狀態。 工作流程協調流程管理員由 Apache Airflow 提供。

在本文中,您將瞭解如何以兩種不同的方式在 Azure Data Factory 工作流程協調流程管理員中同步處理 GitHub 存放庫:

  • 工作流程協調流程管理員 UI 中使用 [啟用 git 同步 處理]。
  • 使用 Rest API。

必要條件

使用工作流程協調流程管理員 UI

若要使用工作流程協調流程管理員 UI 同步處理 GitHub 存放庫:

  1. 請確定您的存放庫包含必要的資料夾和檔案:

    • dags/:針對 Apache Airflow 導向無循環圖表 (dags) (必要)。

    • Plugins/:將外部功能整合至 Airflow。

      顯示 GitHub 中 Airflow 資料夾結構的螢幕快照。

  2. 當您建立工作流程協調流程管理員整合運行時間時,請選取 [Airflow 環境設定] 對話方塊中的 [啟用 Git 同步處理]。

    顯示 [Airflow 環境設定] 對話方塊中 [啟用 git 同步處理] 複選框的螢幕快照,該對話框會顯示在建立 Airflow 整合運行時間期間。

  3. 選取下列其中一種支援的 Git 服務類型:

    • GitHub
    • ADO
    • GitLab
    • BitBucket

    此螢幕快照顯示建立工作流程協調流程管理員整合運行時間期間所出現的 [環境設定] 對話框中的 [Git 服務類型] 選取下拉式清單。

  4. 選取認證類型:

    • (針對公用存放庫):當您選取此選項時,請確定您的存放庫可見度為公用。 然後,填寫詳細資料:

      • Git 存放庫 URL (必要):您想要的 GitHub 存放庫複製 URL。
      • Git 分支 (必要):您想要的 Git 存放庫所在的目前分支。
    • Git 個人存取權杖:在您針對個人存取權杖 (PAT) 選取此選項之後,請根據選取的 Git 服務類型來填寫其餘欄位:

      • GitHub 個人存取權杖
      • ADO 個人存取權杖
      • GitLab 個人存取權杖
      • BitBucket 個人存取權杖

      此螢幕快照顯示 Airflow 環境設定對話框中出現的 Git PAT 認證選項,該對話方塊會在建立 AWorkflow Orchestration Manager 整合運行時間期間顯示。

    • SPN (服務主體名稱):只有 ADO 才支援此認證類型。 在您選取此選項之後,請根據選取的 Git 服務類型來填寫其餘欄位:

      • Git 存放庫 URL (必要):要同步的 GitHub 存放庫複製 URL。
      • Git 分支 (必要):存放庫中要同步的分支。
      • 服務主體應用程式識別碼 (必要):具有 ADO 存放庫存取權且要同步的服務主體應用程式識別碼。
      • 服務主體祕密 (必要):服務主體中手動產生的祕密,其值用來驗證和存取 ADO 存放庫。
      • 服務主體租用戶識別碼 (必要):服務主體租用戶識別碼。

      此螢幕快照顯示 [Airflow 環境設定] 對話框中出現的 [Git SPN 認證] 選項,該對話方塊會在建立工作流程協調流程管理員整合運行時間期間顯示。

  5. 填入其餘含必要資訊的欄位。

  6. 選取 建立

使用 REST API

若要使用 Rest API 來同步 GitHub 存放庫:

  • 方法:PUT

  • URLhttps://management.azure.com/subscriptions/<subscriptionid>/resourcegroups/<resourceGroupName>/providers/Microsoft.DataFactory/factories/<datafactoryName>/integrationruntimes/<airflowEnvName>?api-version=2018-06-01

  • URI 參數

    名稱 位於 必要 類型​ 描述
    訂用帳戶識別碼 path True string 訂用帳戶識別碼
    ResourceGroup 名稱 path True string 資源群組名稱 (Regex 模式:^[-\w\._\(\)]+$)
    dataFactoryName path True string Azure Data Factory 的名稱 (Regex 模式:^[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*$
    airflowEnvName path True 字串 工作流程協調流程管理員環境的名稱
    API 版本 query True string API 版本
  • 要求本文 (Airflow 設定)

    名稱 類型​​ 描述
    NAME 字串 Airflow 環境的名稱
    內容 propertyType 環境的設定屬性
  • Properties 類型

    名稱 類型​​ 描述
    型別 string 資源類型 (在此情況下是 Airflow)
    typeProperties typeProperty 氣流
  • Type 屬性

    名稱 類型​​ 描述
    computeProperties computeProperty 用於環境的計算類型設定
    airflowProperties airflowProperty 環境的 Airflow 屬性設定
  • Compute 屬性

    名稱 類型​​ 描述
    location string Airflow 整合執行階段位置預設為資料處理站區域。 若要在不同的區域中建立整合執行階段,請在必要區域中建立新的資料處理站。
    computeSize string 您想要 Airflow 環境在其上執行的計算節點大小。 範例為「大型」或「小型」。 一開始會配置三個節點。
    extraNodes 整數 每個額外節點都會再新增三個背景工作角色。
  • Airflow 屬性

    名稱 類型​​ 描述
    airflowVersion 字串 支援的 Apache Airflow 版本。 例如,2.4.3。
    airflowRequirements Array<string> 您想要使用的 Python 程式庫。 例如,["flask-bcrypy=0.7.1"]。 可以是逗號分隔清單。
    airflowEnvironmentVariables 物件 (索引鍵值組) 您想要使用的環境變數。 例如,{ "SAMPLE_ENV_NAME": "test" }。
    gitSyncProperties gitSyncProperty Git 設定屬性。
    enableAADIntegration boolean 允許 Microsoft Entra ID 登入工作流程協調流程管理員。
    userName string 或 null 用於基本驗證的使用者名稱。
    password string 或 null 用於基本驗證的密碼。
  • Git 同步屬性

    名稱 類型​​ 描述
    gitServiceType string 您所需存放庫所在的 Git 服務。 值為 GitHub、ADO、GitLab 或 BitBucket。
    gitCredentialType string Git 認證的類型。 值為 PAT (適用於個人存取權杖)、SPN (僅 ADO 予以支援) 和 None。
    repo string 存放庫連結。
    分支 string 存放庫中要使用的分支。
    username string GitHub 使用者名稱。
    認證 string PAT 的值。
    tenantId string 服務主體租用戶識別碼 (僅 ADO 予以支援)。
  • 回應

    名稱 狀態碼 類型 描述
    已接受 200 處理站 確定
    未經授權 401 雲端錯誤 具有更多錯誤詳細資料的陣列

範例

請檢閱下列範例。

範例要求:

HTTP
PUT https://management.azure.com/subscriptions/222f1459-6ebd-4896-82ab-652d5f6883cf/resourcegroups/abnarain-rg/providers/Microsoft.DataFactory/factories/ambika-df/integrationruntimes/sample-2?api-version=2018-06-01

範例本文:

{
   "name": "sample-2",
   "properties": {
      "type": "Airflow",
      "typeProperties": {
         "computeProperties": {
            "location": "East US",
            "computeSize": "Large",
            "extraNodes": 0
         },
         "airflowProperties": {
            "airflowVersion": "2.4.3",
            "airflowEnvironmentVariables": {
               "AIRFLOW__TEST__TEST": "test"
            },
            "airflowRequirements": [
               "apache-airflow-providers-microsoft-azure"
            ],
            "enableAADIntegration": true,
            "userName": null,
            "password": null,
            "airflowEntityReferences": []
         }
      }
   }
}

範例回應:

Status code: 200 OK

回應本文:

{
   "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/your-rg/providers/Microsoft.DataFactory/factories/your-df/integrationruntimes/sample-2",
   "name": "sample-2",
   "type": "Microsoft.DataFactory/factories/integrationruntimes",
   "properties": {
      "type": "Airflow",
      "typeProperties": {
         "computeProperties": {
            "location": "East US",
            "computeSize": "Large",
            "extraNodes": 0
         },
         "airflowProperties": {
            "airflowVersion": "2.4.3",
            "pythonVersion": "3.8",
            "airflowEnvironmentVariables": {
               "AIRFLOW__TEST__TEST": "test"
            },
            "airflowWebUrl": "https://e57f7409041692.eastus.airflow.svc.datafactory.azure.com/login/",
            "airflowRequirements": [
               "apache-airflow-providers-microsoft-azure"
            ],
            "airflowEntityReferences": [],
            "packageProviderPath": "plugins",
            "enableAADIntegration": true,
            "enableTriggerers": false
         }
      },
      "state": "Initial"
   },
   "etag": "3402279e-0000-0100-0000-64ecb1cb0000"
}

以下是一些 API 承載範例:

  • 含 PAT 的 GitHub 的 Git 同步屬性:

    "gitSyncProperties":  {
            "gitServiceType": "Github",
            "gitCredentialType": "PAT",
            "repo":  <repo url>,
            "branch": <repo branch to sync>,
            "username": <username>,
            "credential": <personal access token>
    }
    
  • 含 PAT 的 ADO 的 Git 同步屬性:

    "gitSyncProperties":  {
            "gitServiceType": "ADO",
            "gitCredentialType": "PAT",
            "repo":  <repo url>,
            "branch": <repo branch to sync>,
            "username": <username>,
            "credential": <personal access token>
    }
    
  • 含服務主體的 ADO 的 Git 同步屬性:

    "gitSyncProperties":  {
            "gitServiceType": "ADO",
            "gitCredentialType": "SPN",
            "repo":  <repo url>,
            "branch": <repo branch to sync>,
            "username": < service principal app id >,
            "credential": <service principal secret value>
            "tenantId": <service principal tenant id>
    }
    
  • GitHub 公用存放庫的 Git 同步屬性:

    "gitSyncProperties":  {
            "gitServiceType": "Github",
            "gitCredentialType": "None",
            "repo":  <repo url>,
            "branch": <repo branch to sync>
    }
    

使用 Git 同步匯入私人套件

此選用程序僅適用於您使用私人套件時。

此程序假設您的私人套件是透過 Git 同步自動同步處理。如果您要連線到 ADO 存放庫,請將套件新增為工作流程協調流程管理員 UI 中的需求,以及路徑前置詞 /opt/airflow/git/\<repoName\>/。 針對所有其他 Git 服務,使用 /opt/airflow/git/\<repoName\>.git/

例如,如果您的私人套件位於 /dags/test/private.whl GitHub 存放庫中,您應該在工作流程協調流程管理員環境中新增需求 /opt/airflow/git/\<repoName\>.git/dags/test/private.whl

此螢幕快照顯示 [Airflow 環境設定] 對話方塊中的 [Airflow 需求] 區段,該對話方塊會在建立工作流程協調流程管理員整合運行時間期間出現。