Azure Functions-scenarier
Vi skapar ofta system för att reagera på en rad kritiska händelser. Oavsett om du skapar ett webb-API, svarar på databasändringar, bearbetar händelseströmmar eller meddelanden kan Azure Functions användas för att implementera dem.
I många fall integreras en funktion med en matris med molntjänster för att tillhandahålla funktionsrika implementeringar. Följande är en vanlig (men inte alls fullständig) uppsättning scenarier för Azure Functions.
Välj ditt utvecklingsspråk överst i artikeln.
Bearbeta filuppladdningar
Det finns flera sätt att använda funktioner för att bearbeta filer till eller från en bloblagringscontainer. Mer information om alternativ för att utlösa på en blobcontainer finns i Arbeta med blobar i dokumentationen om metodtips.
I en detaljhandelslösning kan till exempel ett partnersystem skicka produktkataloginformation som filer till bloblagring. Du kan använda en blobutlöst funktion för att verifiera, transformera och bearbeta filerna till huvudsystemet när de laddas upp.
I följande självstudier används en Blob-utlösare (Event Grid-baserad) för att bearbeta filer i en blobcontainer:
Du kan till exempel använda blobutlösaren med en händelseprenumeration på blobcontainrar:
[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();
}
}
}
Realtidsström och händelsebearbetning
Så mycket telemetri genereras och samlas in från molnprogram, IoT-enheter och nätverksenheter. Azure Functions kan bearbeta dessa data nästan i realtid som den frekventa sökvägen och sedan lagra dem i Azure Cosmos DB för användning på en instrumentpanel för analys.
Dina funktioner kan också använda händelseutlösare med låg latens, till exempel Event Grid, och realtidsutdata som SignalR för att bearbeta data nästan i realtid.
Du kan till exempel använda händelsehubbarutlösaren för att läsa från en händelsehubb och utdatabindningen för att skriva till en händelsehubb efter att ha debatterat och transformerat händelserna:
[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-utlösare med integrering av virtuellt nätverk
- Strömma i stor skala med Azure Event Hubs, Functions och Azure SQL
- Strömma i stor skala med Azure Event Hubs, Functions och Cosmos DB
- Strömma i stor skala med Azure Event Hubs med Kafka-producent, Functions med Kafka-utlösare och Cosmos DB
- Strömma i stor skala med Azure IoT Hub, Functions och Azure SQL
- Azure Event Hubs-utlösare för Azure Functions
- Apache Kafka-utlösare för Azure Functions
Maskininlärning och AI
Förutom databehandling kan Azure Functions användas för att härleda modeller. Med Azure OpenAI-bindningstillägget kan du enkelt integrera funktioner och beteenden för Azure OpenAI-tjänsten i dina funktionskodkörningar.
Funktioner kan ansluta till en OpenAI-resurser för att aktivera text- och chattavslutningar, använda assistenter och utnyttja inbäddningar och semantisk sökning.
En funktion kan också anropa en TensorFlow-modell eller Azure AI-tjänster för att bearbeta och klassificera en ström av bilder.
- Självstudie: Text har slutförts med Hjälp av Azure OpenAI
- Exempel: Textsammanfattning med hjälp av AI Cognitive Language Service
- Exempel: Text har slutförts med Hjälp av Azure OpenAI
- Exempel: Tillhandahålla assistentkunskaper till din modell
- Exempel: Generera inbäddningar
- Exempel: Använda semantisk sökning
- Självstudie: Text har slutförts med Hjälp av Azure OpenAI
- Exempel: Text har slutförts med Hjälp av Azure OpenAI
- Exempel: Tillhandahålla assistentkunskaper till din modell
- Exempel: Generera inbäddningar
- Exempel: Använda semantisk sökning
- Självstudie: Text har slutförts med Hjälp av Azure OpenAI
- Utbildning: Skapa en anpassad färdighet för Azure AI Search
- Exempel: Chatta med ChatGPT
- Självstudie: Text har slutförts med Hjälp av Azure OpenAI
- Självstudie: Använda maskininlärningsmodeller i Azure Functions med Python och TensorFlow
- Självstudie: Distribuera en förtränad bildklassificeringsmodell till Azure Functions med PyTorch
- Exempel: Text har slutförts med Hjälp av Azure OpenAI
- Exempel: Tillhandahålla assistentkunskaper till din modell
- Exempel: Generera inbäddningar
- Exempel: Använda semantisk sökning
- Exempel: Chatta med ChatGPT
- Exempel: LangChain med Azure OpenAI och ChatGPT
- Självstudie: Text har slutförts med Hjälp av Azure OpenAI
- Exempel: Text har slutförts med Hjälp av Azure OpenAI
- Exempel: Tillhandahålla assistentkunskaper till din modell
- Exempel: Generera inbäddningar
- Exempel: Använda semantisk sökning
Köra schemalagda aktiviteter
Med Functions kan du köra koden baserat på ett cron-schema som du definierar.
Se hur du skapar en funktion i Azure-portalen som körs enligt ett schema.
En kunddatabas för finansiella tjänster kan till exempel analyseras för dubbletter av poster var 15:e minut för att undvika att flera meddelanden skickas till samma kund.
[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
}
Skapa ett skalbart webb-API
En HTTP-utlöst funktion definierar en HTTP-slutpunkt. Dessa slutpunkter kör funktionskod som kan ansluta till andra tjänster direkt eller med hjälp av bindningstillägg. Du kan skapa slutpunkterna i ett webbaserat API.
Du kan också använda en HTTP-utlöst funktionsslutpunkt som en webhook-integrering, till exempel GitHub-webhooks. På så sätt kan du skapa funktioner som bearbetar data från GitHub-händelser. Mer information finns i Övervaka GitHub-händelser med hjälp av en webhook med Azure Functions.
Exempel finns i följande:
[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: Skapa serverlösa API:er i Visual Studio med hjälp av Azure Functions- och API Management-integrering
- Utbildning: Exponera flera funktionsappar som ett konsekvent API med hjälp av Azure API Management
- Exempel: Webbprogram med ett C#-API och Azure SQL DB på Static Web Apps and Functions
- Http-utlösare för Azure Functions
Skapa ett serverlöst arbetsflöde
Functions är ofta beräkningskomponenten i en serverlös arbetsflödestopologi, till exempel ett Logic Apps-arbetsflöde. Du kan också skapa långvariga orkestreringar med tillägget Durable Functions. Mer information finns i Översikt över Durable Functions.
Svara på databasändringar
Det finns processer där du kan behöva logga, granska eller utföra någon annan åtgärd när lagrade data ändras. Funktionsutlösare är ett bra sätt att meddelas om dataändringar för att initiera en sådan åtgärd.
Föreställ dig följande exempel:
Skapa tillförlitliga meddelandesystem
Du kan använda Functions med Azure-meddelandetjänster för att skapa avancerade händelsedrivna meddelandelösningar.
Du kan till exempel använda utlösare i Azure Storage-köer som ett sätt att länka samman en serie funktionskörningar. Eller använd Service Bus-köer och utlösare för ett onlinebeställningssystem.
Följande artikel visar hur du skriver utdata till en lagringskö.
Och de här artiklarna visar hur du utlöser från en Azure Service Bus-kö eller ett ämne.