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.
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();
}
}
}
- Ereignisbasierte durch Blob Storage ausgelöste Funktion zum Konvertieren von PDF-Dokumente in Text im großen Stil
- Hochladen und Analysieren einer Datei mit Azure Functions und Blob Storage
- Automatisieren der Größenänderung von hochgeladenen Images per Event Grid
- Auslösen von Azure Functions für Blobcontainer mithilfe eines Ereignisabonnements
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.
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);
}
- Service Bus-Trigger mithilfe der Integration des virtuellen Netzwerks
- Streaming im großen Stil mit Azure Event Hubs, Functions und Azure SQL
- Streaming im großen Stil mit Azure Event Hubs, Functions und Cosmos DB
- Streaming im großen Stil mit Azure Event Hubs mit Kafka Producer, Functions mit Kafka-Trigger und Cosmos DB
- Streaming im großen Stil mit Azure IoT Hub, Functions und Azure SQL
- Azure Event Hubs-Trigger für Azure Functions
- Apache Kafka-Trigger für Azure Functions
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.
- Tutorial: Textabschluss mit Azure OpenAI
- Beispiel: Hochladen von Textdateien und Zugreifen auf Daten mithilfe verschiedener OpenAI-Features
- Beispiel: Zusammenfassung von Text mithilfe von KI Cognitive Language Service
- Beispiel: Textabschluss mit Azure OpenAI
- Beispiel: Bereitstellen von Assistentenkenntnissen für Ihr Modell
- Beispiel: Generieren von Einbettungen
- Beispiel: Nutzen der semantischen Suche
- Tutorial: Textabschluss mit Azure OpenAI
- Beispiel: Textabschluss mit Azure OpenAI
- Beispiel: Bereitstellen von Assistentenkenntnissen für Ihr Modell
- Beispiel: Generieren von Einbettungen
- Beispiel: Nutzen der semantischen Suche
- Tutorial: Textabschluss mit Azure OpenAI
- Tutorial: Anwenden von Machine Learning-Modellen in Azure Functions mit Python und TensorFlow
- Tutorial: Bereitstellen eines vortrainierten Bildklassifizierungsmodells für Azure Functions mit PyTorch
- Beispiel: Textabschluss mit Azure OpenAI
- Beispiel: Bereitstellen von Assistentenkenntnissen für Ihr Modell
- Beispiel: Generieren von Einbettungen
- Beispiel: Nutzen der semantischen Suche
- Beispiel: Chat mit ChatGPT
- Beispiel: LangChain mit Azure OpenAI und ChatGPT
- Tutorial: Textabschluss mit Azure OpenAI
- Beispiel: Textabschluss mit Azure OpenAI
- Beispiel: Bereitstellen von Assistentenkenntnissen für Ihr Modell
- Beispiel: Generieren von Einbettungen
- Beispiel: Nutzen der semantischen Suche
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.
[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.
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();
}
- Artikel: Erstellen serverloser APIs in Visual Studio mit Azure Functions und Integration von API Management
- Training: Verfügbarmachen mehrerer Funktions-Apps als einheitliche API mithilfe von Azure API Management
- Beispiel: Webanwendung mit einer C#-API und Azure SQL DB in Static Web Apps und Functions
- HTTP-Trigger in Azure Functions
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.
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.
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.
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.