Synkronisera en GitHub-lagringsplats i Workflow Orchestration Manager

GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics

Dricks

Prova Data Factory i Microsoft Fabric, en allt-i-ett-analyslösning för företag. Microsoft Fabric omfattar allt från dataflytt till datavetenskap, realtidsanalys, business intelligence och rapportering. Lär dig hur du startar en ny utvärderingsversion kostnadsfritt!

Kommentar

Workflow Orchestration Manager drivs av Apache Airflow.

I den här artikeln får du lära dig hur du synkroniserar din GitHub-lagringsplats i Azure Data Factory Workflow Orchestration Manager på två olika sätt:

  • Genom att använda Aktivera git-synkronisering i arbetsflödesorkestreringshanterarens användargränssnitt.
  • Med hjälp av rest-API:et.

Förutsättningar

Använda arbetsflödesorkestreringshanterarens användargränssnitt

Så här synkroniserar du din GitHub-lagringsplats med hjälp av arbetsflödesorkestreringshanterarens användargränssnitt:

  1. Kontrollera att lagringsplatsen innehåller de mappar och filer som behövs:

    • dags/: För Apache Airflow-riktade acykliska grafer (dags) (krävs).

    • Plugin-program/: För integrering av externa funktioner i Airflow.

      Skärmbild som visar strukturen för Airflow-mappar i GitHub.

  2. När du skapar en integrationskörning i Workflow Orchestration Manager väljer du Aktivera git-synkronisering i dialogrutan Konfiguration avAirflow-miljö.

    Skärmbild som visar kryssrutan Aktivera git-synkronisering i dialogrutan Konfiguration av Airflow-miljö som visas när en Airflow-integreringskörning skapas.

  3. Välj någon av följande Git-tjänsttyper som stöds:

    • GitHub
    • ADO
    • GitLab
    • BitBucket

    Skärmbild som visar listrutan Val av Git-tjänsttyp i dialogrutan för miljökonfiguration som visas när du skapar en integrationskörning i Workflow Orchestration Manager.

  4. Välj en typ av autentiseringsuppgifter:

    • Ingen (för en offentlig lagringsplats): När du väljer det här alternativet kontrollerar du att lagringsplatsens synlighet är offentlig. Fyll sedan i informationen:

      • Url för Git-lagringsplats (krävs): Klonings-URL:en för den GitHub-lagringsplats som du vill använda.
      • Git-gren (krävs): Den aktuella grenen, där den Git-lagringsplats du vill använda finns.
    • Personlig git-åtkomsttoken: När du har valt det här alternativet för en personlig åtkomsttoken (PAT) fyller du i de återstående fälten baserat på den valda Git-tjänsttypen:

      • Personlig GitHub-åtkomsttoken
      • Personlig åtkomsttoken för ADO
      • Personlig åtkomsttoken för GitLab
      • Personlig åtkomsttoken för BitBucket

      Skärmbild som visar alternativen för Git PAT-autentiseringsuppgifter i dialogrutan Konfiguration av Airflow-miljö som visas när en AWorkflow Orchestration Manager-integreringskörning skapas.

    • SPN (tjänstens huvudnamn): Endast ADO stöder den här typen av autentiseringsuppgifter. När du har valt det här alternativet fyller du i de återstående fälten baserat på den valda Git-tjänsttypen:

      • Url för Git-lagringsplats (krävs): Klon-URL:en till Git-lagringsplatsen som ska synkroniseras.
      • Git-gren (krävs): Grenen på lagringsplatsen som ska synkroniseras.
      • App-ID för tjänstens huvudnamn (krävs): App-ID för tjänstens huvudnamn med åtkomst till ADO-lagringsplatsen för synkronisering.
      • Hemlighet för tjänstens huvudnamn (krävs): En manuellt genererad hemlighet i tjänstens huvudnamn vars värde används för att autentisera och komma åt ADO-lagringsplatsen.
      • Klient-ID för tjänstens huvudnamn (krävs): Klient-ID för tjänstens huvudnamn.

      Skärmbild som visar alternativen för Git SPN-autentiseringsuppgifter i konfigurationsdialogrutan för Airflow-miljön som visas när du skapar en integrationskörning i Workflow Orchestration Manager.

  5. Fyll i resten av fälten med nödvändig information.

  6. Välj Skapa.

Använda REST API

Så här synkroniserar du din GitHub-lagringsplats med hjälp av Rest-API:et:

  • Metod: PUT

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

  • URI-parametrar:

    Name I Obligatoriskt Type Beskrivning
    Prenumerations-ID path Sant sträng Prenumerationsidentifierare
    ResourceGroup-namn path Sant sträng Resursgruppsnamn (Regex-mönster: ^[-\w\._\(\)]+$)
    dataFactoryName path Sant sträng Namnet på Azure Data Factory (Regex-mönster: ^[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*$
    airflowEnvName path Sant sträng Namn på arbetsflödesorkestreringshanterarens miljö
    Api-version query Sant sträng API-versionen
  • Begärandetext (Airflow-konfiguration):

    Namn Type Beskrivning
    name sträng Namnet på Airflow-miljön
    egenskaper propertyType Konfigurationsegenskaper för miljön
  • Egenskapstyp:

    Namn Type Beskrivning
    Typ sträng Resurstypen (Airflow i det här scenariot)
    typeProperties typeProperty Airflow
  • Typegenskap:

    Namn Type Beskrivning
    computeProperties computeProperty Konfiguration av den beräkningstyp som används för miljön
    airflowProperties airflowProperty Konfiguration av airflow-egenskaperna för miljön
  • Beräkningsegenskap:

    Namn Type Beskrivning
    plats sträng Platsen för Airflow-integreringskörningen är som standard datafabriksregionen. Skapa en ny datafabrik i den region som krävs för att skapa en integrationskörning i en annan region.
    computeSize sträng Storleken på beräkningsnoden som du vill att Airflow-miljön ska köras på. Exempel är Stora eller Små. Tre noder allokeras från början.
    extraNoder integer Varje extra nod lägger till ytterligare tre arbetare.
  • Airflow-egenskap:

    Namn Type Beskrivning
    airflowVersion sträng Version av Apache Airflow som stöds. Till exempel 2.4.3.
    airflowRequirements Matrissträng<> Python-bibliotek som du vill använda. Till exempel ["flask-bcrypy=0.7.1"]. Kan vara en kommaavgränsad lista.
    airflowEnvironmentVariables Objekt (nyckel/värde-par) Miljövariabler som du vill använda. Till exempel { "SAMPLE_ENV_NAME": "test" }.
    gitSyncProperties gitSyncProperty Git-konfigurationsegenskaper.
    enableAADIntegration boolean Tillåter Att Microsoft Entra-ID loggar in på Workflow Orchestration Manager.
    userName sträng eller null Användarnamn för grundläggande autentisering.
    password sträng eller null Lösenord för grundläggande autentisering.
  • Git-synkroniseringsegenskap:

    Namn Type Beskrivning
    gitServiceType sträng Git-tjänsten där den önskade lagringsplatsen finns. Värden är GitHub, ADO, GitLab eller BitBucket.
    gitCredentialType sträng Typ av Git-autentiseringsuppgifter. Värdena är PAT (för personlig åtkomsttoken), SPN (stöds endast av ADO) och Ingen.
    lagringsplats sträng Länk till lagringsplats.
    Gren sträng Gren som ska användas på lagringsplatsen.
    användarnamn sträng GitHub-användarnamn.
    Merit sträng Värdet för PAT.
    tenantId sträng Klient-ID:t för tjänstens huvudnamn (stöds endast av ADO).
  • Svar:

    Name Statuskod Typ Beskrivning
    Har godkänts 200 Fabriken OK
    Behörighet saknas 401 Molnfel Matris med mer felinformation

Exempel

Granska följande exempel.

Exempelförfrågan:

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

Exempeltext:

{
   "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": []
         }
      }
   }
}

Exempelsvar:

Status code: 200 OK

Svarstext:

{
   "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"
}

Här följer några API-nyttolastexempel:

  • Git-synkroniseringsegenskaper för GitHub med PAT:

    "gitSyncProperties":  {
            "gitServiceType": "Github",
            "gitCredentialType": "PAT",
            "repo":  <repo url>,
            "branch": <repo branch to sync>,
            "username": <username>,
            "credential": <personal access token>
    }
    
  • Egenskaper för Git-synkronisering för ADO med PAT:

    "gitSyncProperties":  {
            "gitServiceType": "ADO",
            "gitCredentialType": "PAT",
            "repo":  <repo url>,
            "branch": <repo branch to sync>,
            "username": <username>,
            "credential": <personal access token>
    }
    
  • Egenskaper för Git-synkronisering för ADO med tjänstens huvudnamn:

    "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>
    }
    
  • Git-synkroniseringsegenskaper för en offentlig GitHub-lagringsplats:

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

Importera ett privat paket med Git-synkronisering

Den här valfria processen gäller endast när du använder privata paket.

Den här processen förutsätter att ditt privata paket har synkroniserats automatiskt via Git-synkronisering. Du lägger till paketet som ett krav i arbetsflödesorkestreringshanterarens användargränssnitt tillsammans med sökvägsprefixet /opt/airflow/git/\<repoName\>/, om du ansluter till en ADO-lagringsplats. Använd /opt/airflow/git/\<repoName\>.git/ för alla andra Git-tjänster.

Om ditt privata paket till exempel finns i /dags/test/private.whl en GitHub-lagringsplats bör du lägga till kravet /opt/airflow/git/\<repoName\>.git/dags/test/private.whl i arbetsflödesorkestreringshanterarens miljö.

Skärmbild som visar avsnittet Airflow-krav i dialogrutan Konfiguration av Airflow-miljö som visas när du skapar en arbetsflödesorkestreringshanterarens integrationskörning.