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.

Diagram of a file upload process using Azure Functions.

In den folgenden Tutorials wird ein Event Grid-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.

Diagram of a real-time stream process using 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.

Beispielsweise kann eine Funktion, die ein TensorFlow-Modell aufruft oder dieses an Azure KI Services übermittelt, einen Datenstrom von Bildern verarbeiten und klassifizieren.

Funktionen können auch eine Verbindung mit anderen Diensten herstellen, um Daten zu verarbeiten und andere KI-bezogene Aufgaben wie die Zusammenfassung von Texten auszuführen.

Diagram of a machine learning and AI process using 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 of a scheduled task where a function cleans a database every 15 minutes deduplicating entries based on business logic.

[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.

Diagram of processing an HTTP request using 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.

A combination diagram of a series of specific serverless workflows using Azure Functions.

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 of a function being used to respond to database changes.

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.

Diagram of Azure Functions in a reliable message system.

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