Scenari di Funzioni di Azure
Spesso vengono sviluppati sistemi per reagire a una serie di eventi critici. Che si stia creando un'API Web, rispondendo a modifiche del database, elaborando flussi di eventi o messaggi, Funzioni di Azure può essere usata per implementare le operazioni.
In molti casi una funzione si integra con una serie di servizi cloud per offrire implementazioni complete e avanzate. Di seguito è riportato un insieme comune (ma assolutamente non esaustivo) di scenari per Funzioni di Azure.
Selezionare il linguaggio di sviluppo nella parte superiore dell'articolo.
Elaborare caricamenti di file
Esistono diversi modi per usare le funzioni per elaborare file da o verso un contenitore di archiviazione BLOB. Per altre informazioni sulle opzioni per l'attivazione in un contenitore BLOB, vedere Uso di BLOB nella documentazione sulle procedure consigliate.
Ad esempio, in una soluzione di vendita al dettaglio, un sistema partner può inviare informazioni sul catalogo prodotti come file nell'archivio BLOB. È possibile usare una funzione attivata da BLOB per convalidare, trasformare ed elaborare i file nel sistema principale durante il caricamento.
Le esercitazioni seguenti usano un trigger BLOB (basato su Griglia di eventi) per elaborare i file in un contenitore BLOB:
Ad esempio, usando il trigger BLOB con una sottoscrizione di eventi nei contenitori BLOB:
[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();
}
}
}
- funziona attivata di archiviazione BLOB basata su eventi che converte i documenti PDF in testo in modo scalabile
- Caricare e analizzare un file con Funzioni di Azure e archiviazione BLOB
- Automatizzare il ridimensionamento delle immagini caricate con la griglia di eventi
- Attivare Funzioni di Azure in contenitori BLOB usando una sottoscrizione di eventi
Elaborazione di flussi ed eventi in tempo reale
La maggior parte dei dati di telemetria viene generata e raccolta da applicazioni cloud, dispositivi IoT e dispositivi di rete. Funzioni di Azure può elaborare i dati quasi in tempo reale come percorso critico, quindi archiviarli in Azure Cosmos DB per l'uso in un dashboard di analisi.
Le funzioni possono anche usare trigger di eventi a bassa latenza come Griglia di eventi e output in tempo reale come SignalR per elaborare dati quasi in tempo reale.
Ad esempio, l'uso del trigger di hub eventi per leggere da un hub eventi e il binding di output per scrivere in un hub eventi dopo il debatching e la trasformazione degli eventi:
[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);
}
- Trigger del bus di servizio usando l'integrazione della rete virtuale
- Streaming su larga scala con Hub eventi di Azure, Funzioni e Azure SQL
- Streaming su larga scala con Hub eventi di Azure, Funzioni e Cosmos DB
- Streaming su larga scala con Hub eventi di Azure con producer Kafka, Funzioni con trigger Kafka e Cosmos DB
- Streaming su larga scala con l'hub IoT di Azure, Funzioni e Azure SQL
- Trigger di Hub eventi di Azure per Funzioni di Azure
- Trigger Apache Kafka per Funzioni di Azure
Machine Learning e intelligenza artificiale
Oltre all'elaborazione di dati, Funzioni di Azure può essere usato per deduzioni sui modelli. L'estensione di binding Azure OpenAI consente di integrare facilmente funzionalità e comportamenti del servizio Azure OpenAI nelle esecuzioni del codice della funzione.
Le funzioni possono connettersi a risorse OpenAI per abilitare il completamento di testo e chat, usare assistenti e sfruttare incorporamenti e ricerca semantica.
Una funzione può anche chiamare un modello TensorFlow o i servizi di intelligenza artificiale di Azure per elaborare e classificare un flusso di immagini.
- Esercitazione: Completamento del testo con Azure OpenAI
- Campione: Caricare file di testo e accedere ai dati usando varie funzionalità OpenAI
- Esempio: Riepilogo del testo con AI Cognitive Language Service
- Esempio: Completamento del testo con Azure OpenAI
- Esempio: Fornire competenze di assistente al modello
- Esempio: Generare incorporamenti
- Esempio: Sfruttare la ricerca semantica
- Esercitazione: Completamento del testo con Azure OpenAI
- Esempio: Completamento del testo con Azure OpenAI
- Esempio: Fornire competenze di assistente al modello
- Esempio: Generare incorporamenti
- Esempio: Sfruttare la ricerca semantica
- Esercitazione: Completamento del testo con Azure OpenAI
- Esercitazione: Applicare modelli di Machine Learning in Funzioni di Azure con Python e TensorFlow
- Esercitazione: Distribuire un modello di classificazione di immagini con training preliminare in Funzioni di Azure con PyTorch
- Esempio: Completamento del testo con Azure OpenAI
- Esempio: Fornire competenze di assistente al modello
- Esempio: Generare incorporamenti
- Esempio: Sfruttare la ricerca semantica
- Esempio: Chattare con ChatGPT
- Esempio: LangChain con Azure OpenAI e ChatGPT
- Esercitazione: Completamento del testo con Azure OpenAI
- Esempio: Completamento del testo con Azure OpenAI
- Esempio: Fornire competenze di assistente al modello
- Esempio: Generare incorporamenti
- Esempio: Sfruttare la ricerca semantica
Eseguire attività pianificate
Funzioni consente di eseguire il codice in base a una pianificazione Cron definita dall'utente.
Vedere come Creare una funzione nel portale di Azure eseguita in base a una pianificazione.
Un database dei clienti di servizi finanziari, ad esempio, potrebbe essere analizzato per individuare voci duplicate ogni 15 minuti per evitare che più comunicazioni vengano eseguite allo stesso cliente.
[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
}
Creare un'API Web scalabile
Una funzione attivata da HTTP definisce un endpoint HTTP. Questi endpoint eseguono il codice della funzione che può connettersi ad altri servizi direttamente o usando estensioni binding. È possibile comporre gli endpoint in un'API basata sul Web.
È anche possibile usare un endpoint di funzione attivato da HTTP come integrazione di webhook, ad esempio webhook GitHub. In questo modo, è possibile creare funzioni che elaborano dati da eventi GitHub. Per altre informazioni, vedere Monitorare eventi di GitHub usando un webhook con Funzioni di Azure.
Per esempi, vedere quanto segue:
[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();
}
- Articolo: Creare API serverless in Visual Studio usando Funzioni di Azure e l'integrazione di Gestione API
- Formazione: Esporre più app per le funzioni come API coerenti usando Gestione API di Azure
- Esempio: Applicazione Web con un'API C# e un database SQL di Azure in app Web statiche e Funzioni
- Trigger HTTP di Funzioni di Azure
Creare un flusso di lavoro serverless
Funzioni è spesso il componente di calcolo in una topologia di flusso di lavoro serverless, ad esempio un flusso di lavoro di App per la logica. È anche possibile creare orchestrazioni a esecuzione prolungata usando l'estensione Durable Functions. Per altre informazioni, vedere Panoramica di Durable Functions.
- Avvio rapido: Creare la prima funzione durevole in Azure con Java
Rispondere alle modifiche di database
Esistono processi in cui potrebbe essere necessario registrare, controllare o eseguire altre operazioni quando i dati memorizzati subiscono cambiamenti. I trigger di Funzioni consentono di ricevere una notifica di eventuali modifiche ai dati per al fine di inizializzare un'operazione di questo tipo.
Vedi gli esempi seguenti:
Creare sistemi di messaggistica affidabili
È possibile usare Funzioni con servizi di messaggistica di Azure per creare soluzioni di messaggistica avanzate basate su eventi.
Ad esempio, è possibile usare trigger nelle code di Archiviazione di Azure per concatenare una serie di esecuzioni di funzioni. In alternativa, usare code e trigger del bus di servizio per un sistema di ordinamento online.
L'articolo seguente illustra come scrivere output in una coda di archiviazione.
Questi articoli illustrano come eseguire l'attivazione da una coda o un argomento del bus di servizio di Azure.