在工作流程協調流程管理員中同步處理 GitHub 存放庫
適用於:Azure Data Factory Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用!
注意
此功能處於公開預覽狀態。 工作流程協調流程管理員由 Apache Airflow 提供。
在本文中,您將瞭解如何以兩種不同的方式在 Azure Data Factory 工作流程協調流程管理員中同步處理 GitHub 存放庫:
- 在 工作流程協調流程管理員 UI 中使用 [啟用 git 同步 處理]。
- 使用 Rest API。
必要條件
- Azure 訂用帳戶:如果您沒有 Azure 訂用帳戶,請在開始前先建立免費 Azure 帳戶。 在支援工作流程協調流程管理員預覽的區域中,建立或選取現有的 Data Factory 實例。
- GitHub 存放庫:您需要存取 GitHub 存放庫。
使用工作流程協調流程管理員 UI
若要使用工作流程協調流程管理員 UI 同步處理 GitHub 存放庫:
請確定您的存放庫包含必要的資料夾和檔案:
dags/:針對 Apache Airflow 導向無循環圖表 (dags) (必要)。
Plugins/:將外部功能整合至 Airflow。
當您建立工作流程協調流程管理員整合運行時間時,請選取 [Airflow 環境設定] 對話方塊中的 [啟用 Git 同步處理]。
選取下列其中一種支援的 Git 服務類型:
- GitHub
- ADO
- GitLab
- BitBucket
選取認證類型:
無 (針對公用存放庫):當您選取此選項時,請確定您的存放庫可見度為公用。 然後,填寫詳細資料:
- Git 存放庫 URL (必要):您想要的 GitHub 存放庫複製 URL。
- Git 分支 (必要):您想要的 Git 存放庫所在的目前分支。
Git 個人存取權杖:在您針對個人存取權杖 (PAT) 選取此選項之後,請根據選取的 Git 服務類型來填寫其餘欄位:
- GitHub 個人存取權杖
- ADO 個人存取權杖
- GitLab 個人存取權杖
- BitBucket 個人存取權杖
SPN (服務主體名稱):只有 ADO 才支援此認證類型。 在您選取此選項之後,請根據選取的 Git 服務類型來填寫其餘欄位:
- Git 存放庫 URL (必要):要同步的 GitHub 存放庫複製 URL。
- Git 分支 (必要):存放庫中要同步的分支。
- 服務主體應用程式識別碼 (必要):具有 ADO 存放庫存取權且要同步的服務主體應用程式識別碼。
- 服務主體祕密 (必要):服務主體中手動產生的祕密,其值用來驗證和存取 ADO 存放庫。
- 服務主體租用戶識別碼 (必要):服務主體租用戶識別碼。
填入其餘含必要資訊的欄位。
選取 建立。
使用 REST API
若要使用 Rest API 來同步 GitHub 存放庫:
方法:PUT
URL:
https://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
。