워크플로 오케스트레이션 매니저에서 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(필수): 동기화할 Git 리포지토리의 복제 URL입니다.
- Git 분기(필수): 동기화할 리포지토리의 분기입니다.
- 서비스 주체 앱 ID(필수): 동기화할 ADO 리포지토리에 액세스할 수 있는 서비스 주체 앱 ID입니다.
- 서비스 주체 비밀(필수): ADO 리포지토리를 인증하고 액세스하는 데 사용되는 값을 가진 서비스 주체에서 수동으로 생성된 비밀입니다.
- 서비스 주체 테넌트 ID(필수): 서비스 주체 테넌트 ID입니다.
필수 정보로 나머지 필드를 채웁니다.
만들기를 실행합니다.
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 매개 변수:
이름 그런 다음 필수 Type 설명 구독 ID path True string 구독 ID입니다. ResourceGroup 이름 path True string 리소스 그룹 이름(정규식 패턴: ^[-\w\._\(\)]+$
)메시지 path True string Azure Data Factory의 이름(정규식 패턴: ^[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*$
airflowEnvName path True string 워크플로 오케스트레이션 매니저 환경의 이름 API 버전 query True string API 버전 요청 본문(Airflow 구성):
이름 형식 Description 이름 string Airflow 환경의 이름 속성 propertyType 환경에 대한 구성 속성 속성 유형:
이름 형식 설명 Type string 리소스 종류(이 시나리오에서는 Airflow) typeProperties typeProperty 기류 Type 속성:
이름 형식 설명 computeProperties computeProperty 환경에 사용되는 컴퓨팅 형식 구성 airflowProperties airflowProperty 환경에 대한 Airflow 속성 구성 컴퓨팅 속성:
이름 형식 설명 location string Airflow 통합 런타임 위치는 기본적으로 데이터 팩터리 지역으로 설정됩니다. 다른 지역에서 통합 런타임을 만들려면 필요한 지역에 새 데이터 팩터리를 만듭니다. computeSize string Airflow 환경을 실행할 컴퓨팅 노드의 크기입니다. 예를 들면 크거나 작습니다. 처음에는 3개의 노드가 할당됩니다. extraNodes 정수 노드를 추가할 때마다 작업자가 3명 더 추가됩니다. Airflow 속성:
이름 형식 설명 airflowVersion string 지원되는 버전 Apache Airflow. 예를 들어 2.4.3입니다. airflowRequirements 배열<문자열> 사용하고 싶은 Python 라이브러리입니다. 예를 들어, ["flask-bcrypy=0.7.1"]입니다. 쉼표로 구분된 목록일 수 있습니다. airflowEnvironmentVariables 개체(키/값 쌍) 사용하려는 환경 변수입니다. 예를 들어, { "SAMPLE_ENV_NAME": "test" }입니다. gitSyncProperties gitSyncProperty Git 구성 속성입니다. enableAADIntegration 부울 값 Microsoft Entra ID를 사용하여 워크플로 오케스트레이션 매니저에 로그인할 수 있습니다. userName 문자열 또는 null 기본 인증을 위한 사용자 이름입니다. password 문자열 또는 null 기본 인증을 위한 암호입니다. Git 동기화 속성:
이름 형식 설명 gitServiceType string 원하는 리포지토리가 있는 Git 서비스입니다. 값은 GitHub, ADO, GitLab 또는 BitBucket입니다. gitCredentialType string Git 자격 증명의 형식입니다. 값은 PAT(개인용 액세스 토큰용), SPN(ADO에서만 지원) 및 없음입니다. 리포지토리 string 리포지토리 링크입니다. 분기 string 리포지토리에서 사용할 분기입니다. 사용자 이름 string GitHub 사용자 이름입니다. 자격 증명 string PAT의 값입니다. tenantId string 서비스 주체 테넌트 ID(ADO에서만 지원됨)입니다. 응답:
이름 상태 코드 Type 설명 Accepted 200 팩터리 OK Unauthorized 401 클라우드 오류 자세한 오류 세부 정보가 포함된 배열
예제
다음 예를 검토합니다.
샘플 요청:
HTTP
PUT https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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 리포지토리에 연결하는 경우 경로 접두사 /opt/airflow/git/\<repoName\>/
과 함께 워크플로 오케스트레이션 매니저 UI의 요구 사항으로 패키지를 추가합니다. 다른 모든 Git 서비스에는 /opt/airflow/git/\<repoName\>.git/
를 사용합니다.
예를 들어 프라이빗 패키지가 GitHub 리포지토리의 /dags/test/private.whl
에 있는 경우 요구 사항 /opt/airflow/git/\<repoName\>.git/dags/test/private.whl
을 워크플로 오케스트레이션 매니저 환경에 추가해야 합니다.