Azure Functions-scenario's
We bouwen vaak systemen om te reageren op een reeks kritieke gebeurtenissen. Of u nu een web-API bouwt, reageert op databasewijzigingen, gebeurtenisstromen of berichten verwerkt, Azure Functions kan worden gebruikt om ze te implementeren.
In veel gevallen kan een functie worden geïntegreerd met een matrix van cloudservices om implementaties met uitgebreide functies te bieden. Hieronder ziet u een algemene (maar geen volledige) set scenario's voor Azure Functions.
Selecteer uw ontwikkeltaal bovenaan het artikel.
Uploads van bestanden verwerken
Er zijn verschillende manieren om functies te gebruiken om bestanden te verwerken in of uit een blobopslagcontainer. Zie Werken met blobs in de aanbevolen documentatie voor meer informatie over opties voor het activeren van een blobcontainer.
In een retailoplossing kan een partnersysteem bijvoorbeeld productcatalogusgegevens als bestanden verzenden naar blobopslag. U kunt een door een blob geactiveerde functie gebruiken om de bestanden te valideren, transformeren en verwerken in het hoofdsysteem terwijl ze worden geüpload.
In de volgende zelfstudies wordt een blobtrigger (op basis van Event Grid) gebruikt om bestanden in een blobcontainer te verwerken:
Gebruik bijvoorbeeld de blobtrigger met een gebeurtenisabonnement op blobcontainers:
[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();
}
}
}
- Op gebeurtenissen gebaseerde blobopslag geactiveerde functie waarmee PDF-documenten op schaal worden geconverteerd naar tekst
- Een bestand uploaden en analyseren met Azure Functions en Blob Storage
- Het wijzigen van het formaat van geüploade afbeeldingen automatiseren met behulp van Event Grid
- Azure Functions activeren in blobcontainers met behulp van een gebeurtenisabonnement
Realtime stroom- en gebeurtenisverwerking
Er wordt zoveel telemetrie gegenereerd en verzameld van cloudtoepassingen, IoT-apparaten en netwerkapparaten. Azure Functions kan die gegevens bijna in realtime verwerken als het dynamische pad en deze vervolgens opslaan in Azure Cosmos DB voor gebruik in een analysedashboard.
Uw functies kunnen ook triggers voor gebeurtenissen met lage latentie gebruiken, zoals Event Grid, en realtime-uitvoer zoals SignalR om gegevens in bijna realtime te verwerken.
Als u bijvoorbeeld de Event Hubs-trigger gebruikt om te lezen van een Event Hub en de uitvoerbinding om naar een Event Hub te schrijven na het debatteren en transformeren van de gebeurtenissen:
[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 met behulp van integratie van virtuele netwerken
- Streamen op schaal met Azure Event Hubs, Functions en Azure SQL
- Streamen op schaal met Azure Event Hubs, Functions en Cosmos DB
- Streamen op schaal met Azure Event Hubs met Kafka-producent, Functies met Kafka-trigger en Cosmos DB
- Streamen op schaal met Azure IoT Hub, Functions en Azure SQL
- Azure Event Hubs-trigger voor Azure Functions
- Apache Kafka-trigger voor Azure Functions
Machine learning en AI
Naast gegevensverwerking kan Azure Functions worden gebruikt voor het afleiden van modellen. Met de Azure OpenAI-bindingsextensie kunt u eenvoudig functies en gedrag van de Azure OpenAI-service integreren in de uitvoeringen van uw functiecode.
Functies kunnen verbinding maken met een OpenAI-resources om tekst- en chatvoltooiingen in te schakelen, assistenten te gebruiken en gebruik te maken van insluitingen en semantische zoekopdrachten.
Een functie kan ook een TensorFlow-model of Azure AI-services aanroepen om een stroom afbeeldingen te verwerken en te classificeren.
- Zelfstudie: Tekstvoltooiing met Behulp van Azure OpenAI
- Voorbeeld: Tekstbestanden uploaden en toegang krijgen tot gegevens met behulp van verschillende OpenAI-functies
- Voorbeeld: Samenvatting van tekst met behulp van AI Cognitive Language Service
- Voorbeeld: Voltooiing van tekst met Behulp van Azure OpenAI
- Voorbeeld: Assistentvaardigheden bieden aan uw model
- Voorbeeld: Insluitingen genereren
- Voorbeeld: Semantisch zoeken gebruiken
- Zelfstudie: Tekstvoltooiing met Behulp van Azure OpenAI
- Voorbeeld: Voltooiing van tekst met Behulp van Azure OpenAI
- Voorbeeld: Assistentvaardigheden bieden aan uw model
- Voorbeeld: Insluitingen genereren
- Voorbeeld: Semantisch zoeken gebruiken
- Zelfstudie: Tekstvoltooiing met Behulp van Azure OpenAI
- Zelfstudie: Machine Learning-modellen toepassen in Azure Functions met Python en TensorFlow
- Zelfstudie: Een vooraf getraind afbeeldingsclassificatiemodel implementeren in Azure Functions met PyTorch
- Voorbeeld: Voltooiing van tekst met Behulp van Azure OpenAI
- Voorbeeld: Assistentvaardigheden bieden aan uw model
- Voorbeeld: Insluitingen genereren
- Voorbeeld: Semantisch zoeken gebruiken
- Voorbeeld: Chatten met ChatGPT
- Voorbeeld: LangChain met Azure OpenAI en ChatGPT
- Zelfstudie: Tekstvoltooiing met Behulp van Azure OpenAI
- Voorbeeld: Voltooiing van tekst met Behulp van Azure OpenAI
- Voorbeeld: Assistentvaardigheden bieden aan uw model
- Voorbeeld: Insluitingen genereren
- Voorbeeld: Semantisch zoeken gebruiken
Geplande taken uitvoeren
Met Functions kunt u uw code uitvoeren op basis van een cron-schema dat u definieert.
Bekijk hoe u een functie maakt in Azure Portal die volgens een schema wordt uitgevoerd.
Een klantdatabase voor financiële services kan bijvoorbeeld elke 15 minuten worden geanalyseerd op dubbele vermeldingen om te voorkomen dat meerdere communicatie naar dezelfde klant wordt verzonden.
[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
}
Een schaalbare web-API bouwen
Een door HTTP geactiveerde functie definieert een HTTP-eindpunt. Deze eindpunten voeren functiecode uit die rechtstreeks verbinding kan maken met andere services of door bindingsextensies te gebruiken. U kunt de eindpunten samenstellen in een web-API.
U kunt ook een door HTTP geactiveerd functie-eindpunt gebruiken als webhookintegratie, zoals GitHub-webhooks. Op deze manier kunt u functies maken die gegevens verwerken van GitHub-gebeurtenissen. Zie GitHub-gebeurtenissen bewaken met behulp van een webhook met Azure Functions voor meer informatie.
Zie het volgende voor voorbeelden:
[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: Serverloze API's maken in Visual Studio met behulp van Azure Functions en API Management-integratie
- Training: Meerdere functie-apps beschikbaar maken als een consistente API met behulp van Azure API Management
- Voorbeeld: Webtoepassing met een C#-API en Azure SQL DB in Static Web Apps en Functions
- HTTP-trigger voor Azure Functions
Een serverloze werkstroom maken
Functions is vaak het rekenonderdeel in een serverloze werkstroomtopologie, zoals een Logic Apps-werkstroom. U kunt ook langlopende indelingen maken met behulp van de Durable Functions-extensie. Zie het overzicht van Durable Functions voor meer informatie.
Reageren op wijzigingen in de database
Er zijn processen waarin u mogelijk een andere bewerking moet registreren, controleren of uitvoeren wanneer gegevens worden gewijzigd. Functiestriggers bieden een goede manier om op de hoogte te worden gesteld van gegevenswijzigingen om een dergelijke bewerking in eerste instantie te starten.
Bekijk de volgende voorbeelden:
Betrouwbare berichtsystemen maken
U kunt Functions gebruiken met Azure Messaging-services om geavanceerde gebeurtenisgestuurde berichtenoplossingen te maken.
U kunt bijvoorbeeld triggers in Azure Storage-wachtrijen gebruiken als een manier om een reeks functie-uitvoeringen te koppelen. Of gebruik servicebuswachtrijen en triggers voor een online bestelsysteem.
In het volgende artikel wordt beschreven hoe u uitvoer naar een opslagwachtrij schrijft.
Deze artikelen laten zien hoe u kunt activeren vanuit een Azure Service Bus-wachtrij of -onderwerp.