Share via


워크플로 오케스트레이션 매니저에서 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 통합 런타임을 만드는 동안 표시되는 Airflow 환경 설정 대화 상자에서 git 동기화 사용 확인란을 보여 주는 스크린샷

  3. 지원되는 다음 Git 서비스 형식 중 하나를 선택합니다.

    • GitHub
    • ADO
    • GitLab
    • BitBucket

    워크플로 오케스트레이션 매니저 통합 런타임을 만드는 동안 표시되는 환경 설정 대화 상자에서 Git 서비스 유형 선택 드롭다운을 보여 주는 스크린샷

  4. 자격 증명 유형 선택:

    • 없음(공용 리포지토리의 경우): 이 옵션을 선택할 때 리포지토리의 공용 여부를 확인합니다. 그런 다음 세부 정보를 작성합니다.

      • Git 리포지토리 url(필수): 원하는 GitHub 리포지토리의 복제 URL입니다.
      • Git 분기(필수): 원하는 Git 리포지토리가 있는 현재 분기입니다.
    • Git 개인용 액세스 토큰: PAT(개인용 액세스 토큰)에 대해 이 옵션을 선택한 후 선택한 Git 서비스 형식에 따라 나머지 필드를 작성합니다.

      • GitHub 개인용 액세스 토큰
      • ADO 개인용 액세스 토큰
      • GitLab 개인용 액세스 토큰
      • BitBucket 개인용 액세스 토큰

      워크플로 오케스트레이션 매니저 통합 런타임을 만드는 동안 표시되는 Airflow 환경 설정 대화 상자에서 Git PAT 자격 증명 옵션을 보여 주는 스크린샷

    • SPN(서비스 주체 이름): ADO만 이 자격 증명 형식을 지원합니다. 이 옵션을 선택한 후 선택한 Git 서비스 형식에 따라 나머지 필드를 작성합니다.

      • Git 리포지토리 url(필수): 동기화할 Git 리포지토리의 복제 URL입니다.
      • Git 분기(필수): 동기화할 리포지토리의 분기입니다.
      • 서비스 주체 앱 ID(필수): 동기화할 ADO 리포지토리에 액세스할 수 있는 서비스 주체 앱 ID입니다.
      • 서비스 주체 비밀(필수): ADO 리포지토리를 인증하고 액세스하는 데 사용되는 값을 가진 서비스 주체에서 수동으로 생성된 비밀입니다.
      • 서비스 주체 테넌트 ID(필수): 서비스 주체 테넌트 ID입니다.

      워크플로 오케스트레이션 매니저 통합 런타임을 만드는 동안 표시되는 Airflow 환경 설정 대화 상자에서 Git SPN 자격 증명 옵션을 보여 주는 스크린샷

  5. 필수 정보로 나머지 필드를 채웁니다.

  6. 만들기를 실행합니다.

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 환경에 대한 구성 속성
  • 속성 유형:

    이름 형식 Description
    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/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 리포지토리에 연결하는 경우 경로 접두사 /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을 워크플로 오케스트레이션 매니저 환경에 추가해야 합니다.

워크플로 오케스트레이션 매니저 통합 런타임을 만드는 동안 표시되는 Airflow 환경 설정 대화 상자에서 Airflow 요구 사항 섹션을 보여 주는 스크린샷