Microsoft neustále rozšiřuje nabídku služeb své cloudové platformy Azure. Jednou z mladších jsou Functions. Pokud se podíváte na produktovou stránku Functions, uvidíte v jednom nadpisu “Zpracování událostí s architekturou kódu bez serveru”. To neznamená, že vaše funkce neběží na serverech, samozřejmě běží v datacentrech Microsoftu. Pod pojmem “"architekturou kódu bez serveru” se skrývá to, že Functions jsou relativně malé bloky kódu, které jsou izolované.
Functions můžou být spouštěné periodicky na základě Timer Triggeru (zadávaný v cron formátu), události v jiné službě na Azure (Event Hub, Queue Storage, Service Bus), Http requestu nebo manuálně.
Functions podporují celou řadu jazyků: JavaScript, C#, F#, Python, PHP, Bash, Batch a PowerShell
K čemu je to dobré?
Jeden z modelových příkladů je vytvoření obrázků v různých velikostech pro různé náhledy na základě uložení originálního obrázku do Blob storage. Velmi běžné je provádění různých operací na základě časovače. V jednom z našich projektů voláme každých 5 minut Machine Learning API, které nám vrací hodnoty a ty následně nastavujeme do IoT zařízení. Dalším příkladem z praxe je automatické zamykání časových výkazů. Každý den večer se spouští funkce, která volá API našeho docházkového systému a zamyká záznamy z předchozího dne.
Jak na to?
Na adrese https://functions.azure.com stačí kliknout na tlačítko “Vyzkoušejte zdarma” a spustí se průvodce, který vám umožní vytvořit funkci rychle pomocí některé z předpřipravených funkcí.
Po výběru scénáře, jazyka a vytvoření funkce budete vyzvání k přihlášení se k účtu. Pro výchozí nastavení se vytvoří následující funkce otevřená v online editoru:
V záložce develop je k dispozici online editor, v jeho horní části se nachází tlačítka “Save” a “Save and run”. V pravém vyjížděcím menu je k dispozici správa souborů, kdy můžete přidat, smazat nebo nahrát vlastní soubor. Pro C# mají soubory příponu .csx, výchozí se jmenuje run.csx. Druhým souborem je function.json, kde jsou uloženy informace o nastavení. Další položka pravého menu je Test, která umožňuje testovat aktuální kód v případě, že přijímáte Http requesty. Poslední položka je správa klíčů.
using System;
public static void Run(TimerInfo myTimer, TraceWriter log)
{
log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
}
Vstupním bodem je statická metoda Run, která má dva parametry. TimerInfo, jak je z názvu patrné, obsahuje informace o čase, kdy byla funkce spuštěná. TraceWriter slouží pro logování, které je vidět v záložce monitor.
Pod záložkou integrate hlavního menu se skrývají možnosti nastavení triggerů, inputu a outputu funkce. V záložce manage je možné zapnout/vypnout funkci, smazat a nebo opět spravovat klíče.
Monitor okno může vypadat například následovně:
Nyní můžete psát funkce dle své potřeby, spouštět a monitorovat. V případě, že chcete použít nějaký nuget package, k tomu slouží direktiva r#, pro načtení dalších .csx souborů direktiva #load
#r "Newtonsoft.Json"
#load "Common.csx"
using System;
using System.Text;
using Newtonsoft.Json;
Závěr
Azure Functions jsou ideálním nástrojem pro drobnější operace, které chcete provádět na základě vnějších podmětů nebo časového spínače. Nastínili jsme si možné scénáře, ukázali jak vytvořit základní funkci a popsali webového prostředí pro functions. Příště si ukážeme scénáře, kdy funkce reaguje na změnu v blob storage nebo jak volat funkci pomocí Http requestu.