Freigeben über


Synchronisieren eines GitHub-Repositorys in Workflow Orchestration Manager

GILT FÜR: Azure Data Factory Azure Synapse Analytics

Tipp

Testen Sie Data Factory in Microsoft Fabric, eine All-in-One-Analyselösung für Unternehmen. Microsoft Fabric deckt alle Aufgaben ab, von der Datenverschiebung bis hin zu Data Science, Echtzeitanalysen, Business Intelligence und Berichterstellung. Erfahren Sie, wie Sie kostenlos eine neue Testversion starten!

Hinweis

Dieses Feature befindet sich in der Phase der öffentlichen Vorschau. Workflow Orchestration Manager wird von Apache Airflow unterstützt.

In diesem Artikel erfahren Sie, wie Sie Ihr GitHub-Repository in Azure Data Factory Workflow Orchestration Manager auf zwei verschiedene Arten synchronisieren können:

  • Mithilfe von Git-Synchronisierung aktivieren in der Workflow Orchestration Manager-Benutzeroberfläche.
  • Mithilfe der REST-API.

Voraussetzungen

Verwenden der Workflow Orchestration Manager-Benutzeroberfläche

So synchronisieren Sie Ihr GitHub-Repository mithilfe der Workflow Orchestration Manager-Benutzeroberfläche:

  1. Vergewissern Sie sich, dass Ihr Repository die erforderlichen Ordner und Dateien enthält:

    • dags/: für gerichtete azyklische Graphen (DAGs) in Apache Airflow (erforderlich).

    • Plugins/: für die Integration externer Funktionen in Airflow.

      Screenshot: Airflow-Ordnerstruktur in GitHub

  2. Wenn Sie eine Workflow Orchestration Manager Integration Runtime erstellen, wählen Sie im Dialogfeld Airflow-Umgebung einrichten die OptionGit-Synchronisierung aktivieren aus.

    Screenshot: Kontrollkästchen „Git-Synchronisierung aktivieren“ im Dialogfeld zum Einrichten der Airflow-Umgebung, das während der Erstellung einer Airflow Integration Runtime angezeigt wird.

  3. Wählen Sie einen der folgenden unterstützten Git-Diensttypen aus:

    • GitHub
    • ADO
    • GitLab
    • BitBucket

    Screenshot: Dropdownliste für die Auswahl des Git-Diensttyps im Dialogfeld zum Einrichten der Umgebung, das während der Erstellung einer Workflow Orchestration Manager Integration Runtime angezeigt wird.

  4. Wählen Sie einen Anmeldeinformationstyp aus:

    • Kein (für ein öffentliches Repository): Wenn Sie diese Option auswählen, stellen Sie sicher, dass ihr Repository öffentlich sichtbar ist. Dann füllen Sie die Details aus:

      • Git Repository URL (erforderlich): Die Klon-URL für das gewünschte GitHub-Repository
      • Git-Branch (erforderlich): Der aktuelle Branch, in dem sich das gewünschte Git-Repository befindet.
    • Git personal access token: Nachdem Sie diese Option für ein persönliches Zugriffstoken (PAT) ausgewählt haben, füllen Sie die verbleibenden Felder basierend auf dem ausgewählten Git-Diensttyp aus:

      • Persönliches GitHub-Zugriffstoken
      • ADO persönliches Zugriffstoken
      • GitLab persönliches Zugriffstoken
      • BitBucket persönliches Zugriffstoken

      Screenshot: Git PAT-Anmeldeinformationsoptionen im Dialogfeld zum Einrichten der Airflow-Umgebung, das während der Erstellung einer Workflow Orchestration Manager Integration Runtime angezeigt wird.

    • SPN (Dienstprinzipalname): Nur ADO unterstützt diesen Anmeldeinformationstyp. Nachdem Sie diese Option ausgewählt haben, füllen Sie die restlichen Felder basierend auf dem ausgewählten Git-Diensttyp aus:

      • Git-Repository-URL (erforderlich): Die Klon-URL für das zu synchronisierende Git-Repository
      • Git-Branch (erforderlich): Der zu synchronisierende Branch im Repository
      • Dienstprinzipal-App-ID (erforderlich): Die Dienstprinzipal-App-ID mit Zugriff auf das zu synchronisierende ADO-Repository
      • Dienstprinzipalgeheimnis (erforderlich): Ein manuell generiertes Geheimnis im Dienstprinzipal, dessen Wert für die Authentifizierung und den Zugriff auf das ADO-Repository verwendet wird
      • Dienstprinzipalmandanten-ID (erforderlich): Die Dienstprinzipalmandanten-ID

      Screenshot: Git SPN-Anmeldeinformationsoptionen im Dialogfeld zum Einrichten der Airflow-Umgebung, das während der Erstellung einer Workflow Orchestration Manager Integration Runtime angezeigt wird.

  5. Füllen Sie die restlichen Felder mit den erforderlichen Informationen aus.

  6. Klicken Sie auf Erstellen.

Verwenden der REST-API

So synchronisieren Sie Ihr GitHub-Repository mithilfe der REST-API:

  • Methode: PUT

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

  • URI-Parameter:

    Name Geben Sie in Erforderlich Type BESCHREIBUNG
    Subscription Id (Abonnement-ID) path True Zeichenfolge Abonnementbezeichner
    ResourceGroup Name path True Zeichenfolge Name der Ressourcengruppe (RegEx-Muster: ^[-\w\._\(\)]+$)
    dataFactoryName path True Zeichenfolge Name der Azure Data Factory (Regex-Muster:^[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*$)
    airflowEnvName path True Zeichenfolge Name der Workflow Orchestration Manager-Umgebung
    Api-version Abfrage True Zeichenfolge Die API-Version
  • Anforderungstext (Airflow-Konfiguration):

    Name Typ BESCHREIBUNG
    name Zeichenfolge Name der Airflow-Umgebung
    properties propertyType Konfigurationseigenschaften für die Umgebung
  • Eigenschaftstyp:

    Name Typ Beschreibung
    type Zeichenfolge Der Ressourcentyp (Airflow in diesem Szenario)
    typeProperties typeProperty Luftströmung
  • Type-Eigenschaft:

    Name Typ Beschreibung
    computeProperties computeProperty Konfiguration des für die Umgebung verwendeten Computetyps
    airflowProperties airflowProperty Konfiguration der Airflow-Eigenschaften für die Umgebung
  • Compute-Eigenschaft:

    Name Typ BESCHREIBUNG
    Speicherort Zeichenfolge Als Standort der Airflow Integration Runtime wird standardmäßig die Data Factory-Region übernommen. Wenn Sie eine Integration Runtime in einer anderen Region erstellen möchten, müssen Sie eine neue Data Factory in der erforderlichen Region erstellen.
    computeSize Zeichenfolge Die Größe des Computeknotens, auf dem Ihre Airflow-Umgebung ausgeführt werden soll. Beispiele sind „Large“ oder „Small“. Anfänglich werden drei Knoten zugeordnet.
    extraNodes integer Mit jedem zusätzlichen Knoten werden drei weitere Worker hinzugefügt.
  • Airflow-Eigenschaft:

    Name Typ Beschreibung
    airflowVersion Zeichenfolge Unterstützte Version von Apache Airflow Beispiel: 2.4.3.
    airflowRequirements Array<string> Python-Bibliotheken, die Sie verwenden möchten Beispiel: ["flask-bcrypy=0.7.1"] Kann eine durch Trennzeichen getrennte Liste sein
    airflowEnvironmentVariables Objekt (Schlüssel-Wert-Paar) Umgebungsvariablen, die Sie verwenden möchten Beispiel: { "SAMPLE_ENV_NAME": "test" }
    gitSyncProperties gitSyncProperty Git-Konfigurationseigenschaften
    enableAADIntegration boolean Ermöglicht es Microsoft Entra ID, sich bei Workflow Orchestration Manager anzumelden.
    userName Zeichenfolge oder null Benutzername für die Standardauthentifizierung
    Kennwort Zeichenfolge oder null Kennwort für die Standardauthentifizierung
  • Git-Synchronisierungseigenschaft:

    Name Typ Beschreibung
    gitServiceType Zeichenfolge Der Git-Dienst, in dem sich Ihr gewünschtes Repository befindet. Zulässige Werte sind „GitHub“, „ADO“, „GitLab“ oder „BitBucket“.
    gitCredentialType Zeichenfolge Typ der Git-Anmeldeinformation. Zulässige Werte sind „PAT“ (für persönliches Zugriffstoken), „SPN“ (nur von ADO unterstützt) und „Keine“.
    Repository Zeichenfolge Repositorylink
    Verzweigung Zeichenfolge Branch, der im Repository verwendet werden soll
    username Zeichenfolge GitHub-Benutzername
    Anmeldeinformationen Zeichenfolge Wert des PAT
    tenantId Zeichenfolge Die Dienstprinzipal-Mandanten-ID (nur von ADO unterstützt)
  • Antworten:

    Name Statuscode type Beschreibung
    Akzeptiert 200 Factory OK
    Nicht autorisiert 401 Cloudfehler Array mit weiteren Fehlerdetails

Beispiele

Sehen Sie sich die folgenden Beispiele an.

Beispiel für eine Anforderung:

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

Beispieltext:

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

Beispiel für eine Antwort:

Status code: 200 OK

Antworttext:

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

Hier sind einige Beispiele für API-Nutzdaten:

  • Git-Synchronisierungseigenschaften für Github mit PAT:

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

    "gitSyncProperties":  {
            "gitServiceType": "ADO",
            "gitCredentialType": "PAT",
            "repo":  <repo url>,
            "branch": <repo branch to sync>,
            "username": <username>,
            "credential": <personal access token>
    }
    
  • Git-Synchronisierungseigenschaften für ADO mit Dienstprinzipal:

    "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-Synchronisierungseigenschaften für das öffentliche GitHub-Repository:

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

Importieren eines privaten Pakets mit Git-Synchronisierung

Dieser optionale Prozess gilt nur, wenn Sie private Pakete verwenden.

Bei diesem Prozess wird davon ausgegangen, dass Ihr privates Paket über die Git-Synchronisierung automatisch synchronisiert wurde. Sie fügen das Paket als Anforderung in der Workflow Orchestration Manager-Benutzeroberfläche zusammen mit dem Pfadpräfix /opt/airflow/git/\<repoName\>/hinzu, wenn Sie eine Verbindung mit einem ADO-Repository herstellen. Verwenden Sie /opt/airflow/git/\<repoName\>.git/ für alle anderen Git-Dienste.

Wenn sich Ihr privates Paket beispielsweise in /dags/test/private.whl in einem GitHub-Repository befindet, sollten Sie die Anforderung /opt/airflow/git/\<repoName\>.git/dags/test/private.whl in der Workflow Orchestration Manager-Umgebung hinzufügen.

Screenshot: Abschnitt „Airflow-Anforderungen“ im Dialogfeld zum Einrichten der Airflow-Umgebung, das während der Erstellung einer Workflow Orchestration Manager Integration Runtime angezeigt wird.