Connector Extension for Azure Functions overview (Preview)

Die Connector-Erweiterung ermöglicht es einer Azure Functions-App, Ereignisse von verwalteten Connectors im Azure Connector-Namensraum zu empfangen und bietet vorgefertigten Zugriff auf Dienste wie Office 365 Outlook, SharePoint Online, Microsoft Teams, Dataverse und viele weitere Microsoft- und Drittanbieter-Dienste. Um die verfügbaren verwalteten Steckverbinder zu erkunden, siehe die Referenz zu den Anschlüssen.

Important

Die Connector-Erweiterung befindet sich derzeit in der öffentlichen Vorschau. Funktionen, Konfigurationsnamen und unterstützte Anschlüsse können sich vor der allgemeinen Verfügbarkeit (GA) ändern. Die Nutzung dieser Funktion unterliegt den ergänzenden Nutzungsbedingungen für Microsoft Azure Previews.

Note

Der Connector-Trigger wird derzeit für diese Sprache nicht unterstützt.

Vorgang Type
Führe eine Funktion aus, wenn ein Ereignis in einem verbundenen Dienst auftritt Auslöser

Die Connector-Erweiterung stellt die eingehende Triggerbindung bereit, die eine Funktion ausführt, wenn ein Ereignis in einem über einen verwalteten Connector verbundenen Dienst auftritt. Um Operationen aufzurufen und Aktionen in diesen verbundenen Diensten aus Ihrem Funktionscode auszuführen, verwenden Sie ein Azure Connectors SDK, das derzeit für .NET, Node.jsund Python verfügbar ist. Für weitere Informationen zu Triggern, SDK-Aktionen und wann Sie Managed Connectors verwenden sollten, siehe Use Managed Connectors in Azure Functions.

Wie die Erweiterung funktioniert

Eine vom Stecker ausgelöste Funktion verwendet folgende Komponenten:

Component Verantwortung
Connector-Namespace Hosts verwalten Connector-Verbindungen und triggern Konfigurationen.
Managed Connector-Verbindung Authentifiziert sich beim externen Dienst und verwaltet dienstspezifische Konnektivität.
Triggerkonfiguration Wählt das Connector-Ereignis und die Betriebsparameter aus und bildet das Ereignis einer Zielfunktion zu.
Steckverbinderverlängerung Registriert den Callback-Endpunkt, validiert die HTTP-Methode, den Inhaltstyp und den JSON-Körper, sendet die Anfrage an die ausgewählte Funktion und bindet den Ereigniskörper an den Funktionsparameter.
Azure Connectors SDK Bietet optionale stark typisierte Nutzlastmodelle und Clients zum Aufrufen von verwalteten Connector-Operationen, wie dem Versenden einer E-Mail oder dem Erstellen einer SharePoint-Datei.

Wenn ein konfiguriertes Ereignis auftritt, sendet der Connector Namespace das Ereignis an den Webhook-Endpunkt der Erweiterung. Die Erweiterung verwendet den Wert der functionName Abfragezeichenkette, um die Funktion auszuwählen, und übergibt den JSON-Ereigniskörper an den Triggerparameter. Der Functions-Host validiert den Systemschlüssel, bevor die Erweiterung die Anfrage verarbeitet, es sei denn, Sie konfigurieren eine andere Authentifizierungsschicht wie in Authenticate Callbacks beschrieben.

In einer .NET-isolierten Worker-Funktion wird auf den Parameter angewendet[ConnectorTrigger], der den Ereigniskörper empfängt.

Installieren der Erweiterung

Der Connector-Trigger unterstützt das .NET isolierte Worker-Modell. Informationen zu unterstützten .NET-Versionen in Azure Functions-Laufzeitversionen finden Sie unter Sprachen nach Laufzeitversion.

Füge das Vorschau-Connector-Erweiterungspaket zu deinem Projekt hinzu:

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Connector --prerelease

Um stark typisierte Payload-Modelle oder Call Managed Connector-Operationen zu verwenden, fügen Sie außerdem das Vorschau-Azure Connectors SDK hinzu:

dotnet add package Azure.Connectors.Sdk --prerelease

Für aktuelle Paketversionen und vollständige Projekte siehe die Azure Functions-Connector-Beispiele für .NET.

Installieren der Erweiterung

Installieren Sie die vom Connector-Trigger verwendeten Pakete:

npm install @azure/functions @azure/functions-extensions-connectors @azure/connectors

Diese Pakete bieten folgende Funktionalität:

  • @azure/functions stellt die Basisregistrierung connectorTrigger bereit, die die Triggereingabe als generischen Typ erhält, der standardmäßig auf unknown.
  • @azure/functions-extensions-connectors umwickelt den Eingang in einen normalisierten Connector-Triggerkontext und stellt typisierte Kontexte für unterstützte Steckeroperationen bereit.
  • @azure/connectors, die Vorschau Azure Connectors SDK für Node.js, stellt die Nutzlastmodelle bereit, die von diesen Kontexten und Clients für das Aufrufen von Connector-Operationen verwendet werden.

Konfigurieren Sie Ihre App so, dass sie Version 4.42.0 oder höher des Preview-Erweiterungspakets in der host.json-Datei verwendet:

{
  "version": "2.0",
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
    "version": "[4.42.*, 5.0.0)"
  }
}

Für aktuelle Paketversionen und komplette Projekte siehe die Azure Functions-Connector-Beispiele für TypeScript.

Installieren der Erweiterung

Verwenden Sie das Python v2 Programmiermodell und installieren Sie die Pakete, die vom Connector-Trigger benötigt werden:

azure-functions>=2.2.0
azurefunctions-extensions-connectors

Note

Für Python-Versionen vor 3.13 verwenden azure-functions>=1.26.0b3Sie .

Die Core Azure-Functions Python-Bibliothek kann die Trigger-Nutzlast an str, dict, oder bytesbinden. Das azurefunctions-extensions-connectors-Paket integriert das Azure Connectors SDK für Python und registriert zusätzliche Konverter für die betriebsspezifischen SDK-Annotationen, die es unterstützt.

Konfigurieren Sie Ihre App so, dass sie Version 4.42.0 oder höher des Preview-Erweiterungspakets in der host.json-Datei verwendet:

{
  "version": "2.0",
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
    "version": "[4.42.*, 5.0.0)"
  }
}

Für aktuelle Paketversionen und komplette Projekte siehe die Azure Functions-Connector-Beispiele für Python.

Bindungstypen

Der Connector-Trigger unterstützt diese Parametertypen für .NET-isolierte Worker-Funktionen:

Type Description
string Erhält den Event-Body als rohes JSON. Verwenden Sie diesen Typ, wenn kein stark typisiertes SDK-Modell verfügbar ist oder wenn Sie die Nutzlast selbst deserialisieren möchten.
Connector-SDK-Modell Deserialisiert den JSON-Ereigniskörper in das operation-spezifische Modell von Azure.Connectors.Sdk, wie zum Office365OnNewEmailTriggerPayload Beispiel oder SharePointOnlineOnNewFileItemsTriggerPayload.
JSON-deserialisierbarer POCO Deserialisiert den JSON-Ereigniskörper in einen .NET-Typ, dessen Form zur Connector-Nutzlast passt, indem verwendet System.Text.Jsonwird.

Für Codebeispiele und betriebsspezifisches Nutzlastverhalten siehe die Connector-Trigger-Referenz.

Um zu bestimmen, welche Connector-Operationen stark typisierte .NET-Payload-Modelle haben, siehe Operations to Azure Functions signature mapping.

Bindungstypen

Die Basisregistrierung connectorTrigger leitet die Triggereingabe an einen generischen Handler-Typ weiter, der standardmäßig auf unknown. Das Paket @azure/functions-extensions-connectors parst die rohe Eingabe in eine ConnectorTriggerContext<T> mit den normalisierten payload und items Eigenschaften, dem ursprünglichen rawPayloadund operation-spezifischen typisierten Kontexten, wenn verfügbar. Für Operationen ohne getippte Registrierung verwenden Sie den generischen Kontext und validieren Sie die unknown Nutzlast, bevor Sie auf deren Inhalt zugreifen.

Um zu bestimmen, welche Connector-Operationen stark typisierte TypeScript-Payload-Modelle haben, siehe Operations to Azure Functions Signature Mapping.

Bindungstypen

Der Connector-Trigger unterstützt diese Python-Parametertypen:

Type Description
str Erhält den Ereigniskörper als JSON-String.
dict Erhält einen Ereigniskörper, den der Arbeiter als JSON parsiert hat.
bytes Erhält den Ereigniskörper als rohe Bytes.
Unterstützte Connector SDK-Annotation Verwendet einen von registrierten Konverter azurefunctions-extensions-connectors , um den Ereigniskörper in ein oder mehrere betriebsspezifische SDK-Modelle zu deserialisieren.

Um zu bestimmen, welche Connector-Operationen einen registrierten Python-Konverter haben und ob die Annotation ein Element oder eine Sammlung darstellt, siehe Operations to Azure Functions Signature Mapping. Verwenden strSie , dict, oder bytes für Operationen, die keine unterstützte SDK-Annotation haben.

Connector-Ressourcen konfigurieren

Bevor die Erweiterung ein Ereignis empfangen kann, erstellen Sie diese Ressourcen und Konfigurationen:

  1. Ein Connector-Namensraum.
  2. Eine verwaltete Verbindung, die autorisiert ist, auf den externen Dienst zuzugreifen.
  3. Eine Trigger-Konfiguration, die das Connector-Event auswählt und die Zielfunktion identifiziert.

Die Trigger-Konfiguration umfasst die Managed-Connector-Verbindung, den Operationsnamen, die Operationsparameter, die Callback-URL und die Callback-Authentifizierung. Für die Konfigurationswerte und Anweisungen zur Erstellung eines Triggers mittels Azure CLI oder des Connector Namespace-Portals siehe Trigger konfigurieren.

Authentifiziere Rückrufe

Standardmäßig erstellt die Connector-Erweiterung einen Funktions-App-Systemschlüssel namens connector_extension. Holen Sie den Schlüssel ab, indem Sie ausführen:

az functionapp keys list \
    --resource-group <RESOURCE_GROUP> \
    --name <FUNCTION_APP_NAME> \
    --query "systemKeys.connector_extension" \
    --output tsv

Konfigurieren Sie die Rückruf-URL ohne den Schlüssel:

https://<FUNCTION_APP_HOSTNAME>/runtime/webhooks/connector?functionName=<FUNCTION_NAME>

Speichern Sie den Schlüssel separat in notificationDetails.authentication:

{
  "notificationDetails": {
    "callbackUrl": "https://<FUNCTION_APP_HOSTNAME>/runtime/webhooks/connector?functionName=<FUNCTION_NAME>",
    "authentication": {
      "type": "QueryString",
      "name": "code",
      "value": "<CONNECTOR_EXTENSION_KEY>"
    }
  }
}

Beim Rückruf fügt der Connector-Namensraum den Schlüssel als Abfragestring-Parameter code hinzu. Wenn der Schlüssel von der gespeicherten Rückruf-URL getrennt bleibt, kann das Portal ihn als Geheimnis tarnen.

Für Deployments, die identitätsbasierte Rückrufauthentifizierung erfordern, verwenden Sie die integrierte App Service-Authentifizierung mit einer verwalteten Identität anstelle eines gemeinsamen Systemschlüssels. Für das vollständige Muster siehe Authenticate your functions to a connector namespace.

Einstellungen für „host.json“

Die Standard-Systemschlüssel-Authentifizierung erfordert keine connector-spezifischen Einstellungen in der host.json-Datei .

Wenn die integrierte App Service-Authentifizierung Rückrufe aus dem Connector-Namensraum validiert, können Sie die redundante Systemschlüsselprüfung deaktivieren:

{
  "version": "2.0",
  "extensions": {
    "connector": {
      "system": {
        "webhookAuthorizationLevel": "Anonymous"
      }
    }
  }
}

Verwenden Anonymous Sie nur, wenn eine andere Authentifizierungsschicht, wie die integrierte App Service-Authentifizierung, Anfragen validiert, bevor sie den Funktionshost erreichen.

Für eine vollständige Implementierung dieser sprachunabhängigen App-Konfiguration siehe das integrierte Authentifizierungsbeispiel.

Nächste Schritte