Azure Functions-Szenarien

Systeme werden häufig entwickelt, um auf eine Reihe von kritischen Ereignissen zu reagieren. Unabhängig davon, ob Sie eine Web-API erstellen, auf Datenbankänderungen reagieren oder Ereignisdatenströme oder Nachrichten verarbeiten, kann Azure Functions verwendet werden, um sie zu implementieren.

In vielen Fällen wird eine Funktion in ein Array mit Clouddiensten integriert, um Implementierungen mit großem Funktionsumfang zu erzielen. Unten sind einige häufige Szenarien für Azure Functions aufgeführt. Es handelt sich dabei aber nicht um eine vollständige Liste.

Wählen Sie am Anfang des Artikels Ihre Entwicklungssprache.

Verarbeiten von Dateiuploads

Es gibt mehrere Möglichkeiten, um Funktionen zum Verarbeiten von Dateien in oder aus einem Blob Storage-Container zu verwenden. Weitere Informationen zu Optionen zum Auslösen in einem Blobcontainer finden Sie in der Dokumentation zu bewährten Methoden unter Arbeiten mit Blobs.

In einer Lösung für den Einzelhandel kann beispielsweise ein Partnersystem Produktkataloginformationen als Dateien in einen Blob Storage übermitteln. Sie können eine durch Blobs ausgelöste Funktion verwenden, um die Dateien während des Uploads in das Hauptsystem zu überprüfen, zu transformieren und zu verarbeiten.

Diagramm: Prozess des Uploads einer Datei mithilfe von Azure Functions.

In den folgenden Tutorials wird ein Event Grid-basierter Blob-Auslöser verwendet, um Dateien in einem Blobcontainer zu verarbeiten:

Der Blobtrigger kann beispielsweise mit einem Ereignisabonnement für Blobcontainer folgendermaßen verwendet werden:

[FunctionName("ProcessCatalogData")]
public static async Task Run([BlobTrigger("catalog-uploads/{name}", Source = BlobTriggerSource.EventGrid, Connection = "<NAMED_STORAGE_CONNECTION>")]Stream myCatalogData, string name, ILogger log)
{
    log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myCatalogData.Length} Bytes");

    using (var reader = new StreamReader(myCatalogData))
    {
        var catalogEntry = await reader.ReadLineAsync();
        while(catalogEntry !=null)
        {
            // Process the catalog entry
            // ...

            catalogEntry = await reader.ReadLineAsync();
        }
    }
}

Echtzeit-Datenstrom- und -Echtzeit-Ereignisverarbeitung

Von Cloudanwendungen, IoT-Geräten und Netzwerkgeräten werden eine große Menge an Telemetriedaten generiert und gesammelt. Azure Functions kann diese Daten nahezu in Echtzeit als langsamsten Pfad verarbeiten und dann in Azure Cosmos DB speichern, um sie in einem Analytics-Dashboard zu verwenden.

Ihre Funktionen können auch Ereignistrigger mit geringer Latenz wie Event Grid und Echtzeitausgaben wie SignalR verwenden, um Daten nahezu in Echtzeit zu verarbeiten.

Diagramm: Prozess des Echtzeit-Streamings mithilfe von Azure Functions.

Verwenden Sie beispielsweise den Event Hubs-Trigger, um aus einem Event Hub zu lesen, und die Ausgabebindung, um nach dem Auflösen und Transformieren der Ereignisse in einen Event Hub zu schreiben:

[FunctionName("ProcessorFunction")]
public static async Task Run(
    [EventHubTrigger(
        "%Input_EH_Name%",
        Connection = "InputEventHubConnectionString",
        ConsumerGroup = "%Input_EH_ConsumerGroup%")] EventData[] inputMessages,
    [EventHub(
        "%Output_EH_Name%",
        Connection = "OutputEventHubConnectionString")] IAsyncCollector<SensorDataRecord> outputMessages,
    PartitionContext partitionContext,
    ILogger log)
{
    var debatcher = new Debatcher(log);
    var debatchedMessages = await debatcher.Debatch(inputMessages, partitionContext.PartitionId);

    var xformer = new Transformer(log);
    await xformer.Transform(debatchedMessages, partitionContext.PartitionId, outputMessages);
}

Machine Learning und KI

Neben der Datenverarbeitung kann Azure Functions verwendet werden, um Modelle abzuleiten. Die Azure OpenAI-Bindungserweiterung ermöglicht die einfache Integration von Features und Verhalten des Azure OpenAI-Diensts in Ihre Funktionscodeausführungen.

Funktionen können eine Verbindung zu OpenAI-Ressourcen herstellen, um Text- und Chatabschlusse zu ermöglichen, Assistenten zu verwenden und Einbettungen und semantische Suche zu nutzen.

Eine Funktion kann auch ein TensorFlow-Modell oder Azure AI-Dienste aufrufen, um einen Datenstrom von Bildern zu verarbeiten und zu klassifizieren.

Diagram eines ML- und KI-Prozesses mithilfe von Azure Functions.

Ausführen von geplanten Aufgaben

Mithilfe von Functions können Sie Ihren Code basierend auf einem cron-Zeitplan ausführen, den Sie selbst festlegen.

Sehen Sie sich an, wie Sie eine Funktion im Azure-Portal erstellen können, die gemäß einem Zeitplan ausgeführt wird.

Eine Kundendatenbank für Finanzdienstleistungen kann beispielsweise alle 15 Minuten auf eingetragene Duplikate analysiert werden, um zu vermeiden, dass derselbe Kunde mehrere Kommunikationen erhält.

Diagram einer geplanten Aufgabe, bei der eine Funktion alle 15 Minuten Duplikate basierend auf einer Geschäftslogik aus einer Datenbank entfernt.

[FunctionName("TimerTriggerCSharp")]
public static void Run([TimerTrigger("0 */15 * * * *")]TimerInfo myTimer, ILogger log)
{
    if (myTimer.IsPastDue)
    {
        log.LogInformation("Timer is running late!");
    }
    log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");

    // Perform the database deduplication
}

Erstellen einer skalierbaren Web-API

Eine durch HTTP ausgelöste Funktion definiert einen HTTP-Endpunkt. Diese Endpunkte führen Funktionscode aus, der direkt oder mithilfe von Bindungserweiterungen eine Verbindung mit anderen Diensten herstellen kann. Sie können die Endpunkte in einer webbasierten API zusammenstellen.

Sie können auch einen durch HTTP ausgelösten Funktionsendpunkt als Webhookintegration verwenden, z. B. GitHub-Webhooks. Auf diese Weise können Sie Funktionen erstellen, die Daten aus GitHub-Ereignissen verarbeiten. Weitere Informationen finden Sie unter Überwachen von GitHub-Ereignissen mithilfe eines Webhooks mit Azure Functions.

Diagramm: Verarbeitung einer HTTP-Anforderung mithilfe von Azure Functions.

Beispiele finden Sie in den folgenden Ressourcen:

[FunctionName("InsertName")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequest req,
    [CosmosDB(
        databaseName: "my-database",
        collectionName: "my-container",
        ConnectionStringSetting = "CosmosDbConnectionString")]IAsyncCollector<dynamic> documentsOut,
    ILogger log)
{
    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    dynamic data = JsonConvert.DeserializeObject(requestBody);
    string name = data?.name;

    if (name == null)
    {
        return new BadRequestObjectResult("Please pass a name in the request body json");
    }

    // Add a JSON document to the output container.
    await documentsOut.AddAsync(new
    {
        // create a random ID
        id = System.Guid.NewGuid().ToString(), 
        name = name
    });

    return new OkResult();
}

Entwickeln eines serverlosen Workflows

Functions ist häufig die Computekomponente in einer serverlosen Workflowtopologie, z. B. in einem Logic Apps-Workflow. Sie können auch Orchestrierungen mit langer Ausführungsdauer erstellen. Nutzen Sie dafür die Durable Functions-Erweiterung. Weitere Informationen finden Sie unter Überblick über Durable Functions.

Ein kombiniertes Diagramm mit einer Reihe spezifischer serverloser Workflows, die Azure Functions verwenden.

Reagieren auf Datenbankänderungen

Es gibt Prozesse, bei denen Sie möglicherweise protokollieren, überwachen oder einen anderen Vorgang ausführen müssen, wenn sich gespeicherte Daten ändern. Functions-Trigger bieten eine gute Möglichkeit, über Datenänderungen benachrichtigt zu werden, um einen solchen Vorgang zu starten.

Diagram einer Funktion, die verwendet wird, um auf Änderungen an einer Datenbank zu reagieren.

Betrachten Sie die folgenden Beispiele:

Erstellen zuverlässiger Messagingsysteme

Sie können Funktionen mit Azure-Messagingdiensten verwenden, um erweiterte ereignisgesteuerte Messaginglösungen zu erstellen.

Beispielsweise können Sie Trigger in Azure Storage-Warteschlangen verwenden, um eine Reihe von Funktionsausführungen miteinander zu verketten. Alternativ können Sie für ein Onlinebestellungssystem Service Bus-Warteschlangen und Trigger verwenden.

Diagramm von Azure Functions in einem zuverlässigen Messagingsystem.

Im folgenden Artikel wird gezeigt, wie eine Ausgabe in eine Speicherwarteschlange geschrieben wird.

Und diese Artikeln zeigen, wie man einen Trigger aus einer Azure Service Bus-Warteschlange oder einem Azure Service Bus-Thema erzeugt.

Nächste Schritte